728x90
# 출처 : https://programmers.co.kr/learn/courses/30/lessons/68644
# 문제 요약
배열에 담긴 수를 두개씩 뽑아 더하는 모든 경우를 계산해, 중복되는 값 없이 배열에 담아 return 하는 문제
# 풀이
two pointer 사용
# 코드
import java.util.Arrays;
import java.util.Stack;
class Solution {
public int[] solution(int[] numbers) {
int start = 0;
int end = 1;
Stack<Integer> stack = new Stack<Integer>();
for(int i=0; i<times(numbers.length); i++){
if(start == numbers.length-2) break;
if(end == numbers.length){
++start;
end=start+1;
}
int num = numbers[start]+numbers[end++];
if(!stack.contains(num)){
stack.push(num);
}
}
int[] answer = new int[stack.size()];
for(int j=stack.size()-1; j>=0; j--){
answer[j] = stack.pop();
}
Arrays.sort(answer);
return answer;
}
int times(int numLength){
return (numLength*(numLength-1))/2;
}
}
728x90
'algorithm > programmers' 카테고리의 다른 글
[programmers] 신규 아이디 추천(Java)_2021 KAKAO BLIND RECRUITMENT (1) | 2022.09.29 |
---|---|
[programmers] 신고 결과 받기(Java)_2022 KAKAO BLIND RECRUITMENT (0) | 2022.09.29 |
[programmers] [1차] 비밀지도(Java)_2018 KAKAO BLIND RECRUITMENT (0) | 2022.08.30 |
[programmers] 크레인 인형뽑기 게임(Java)_2019 카카오 개발자 겨울 인턴십 (0) | 2022.06.26 |
[Programmers] 소수만들기 (Java)_Summer/Winter Coding(~2018) (0) | 2022.06.25 |