algorithm/programmers

[programmers] 두 개 뽑아서 더하기(Java)_월간 코드 챌린지 시즌1

올빼밋. 2022. 6. 28. 21:55
728x90

# 출처 : https://programmers.co.kr/learn/courses/30/lessons/68644

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr


# 문제 요약

배열에 담긴 수를 두개씩 뽑아 더하는 모든 경우를 계산해, 중복되는 값 없이 배열에 담아 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