코딩테스트/프로그래머스

[프로그래머스]두 개 뽑아서 더하기 - Java

GAEBAL 2022. 11. 16. 22:48
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/68644

 

 

풀이

Level 1 문제임

 

엄청 쉬운 완전 탐색 문제인 듯??

 

숫자 두개를 뽑아서 더하면 같은 결과가 나올 수 있는데 문제를 보면 같은 결과는 같다고 판단하는 것을 알 수 있음. 그래서 Set에다가 추가했는데, Set을 List로 바꿔서 배열을 선언 후에 차례대로 배열에 넣어줬음.

 

근데

List<Integer> answerList = answerSet.stream().toList();

이 문법(stream().toList())은 프로그래머스에서 아직 지원을 안하는 듯?

 

그래서 

for (int temp : answerSet) {
    answerList.add(temp);
}

이렇게 List에 넣어줬음!

 

자세한건 주석으로 !

 

 

코드

// 코딩테스트 연습 - 월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기
// https://school.programmers.co.kr/learn/courses/30/lessons/68644

package PROGRAMMERS.level1;

import java.util.*;

public class Num68644_두개뽑아서더하기 {
    private static class Solution {
        public int[] solution(int[] numbers) {
            Set<Integer> answerSet = new HashSet<>();

            for (int i = 0; i < numbers.length - 1; i++) {
                for (int j = i + 1; j < numbers.length; j++) {
                    answerSet.add(numbers[i] + numbers[j]);
                }
            }

            int[] answer = new int[answerSet.size()];

            List<Integer> answerList = new ArrayList<>();

            for (int temp : answerSet) {
                answerList.add(temp);
            }

            Collections.sort(answerList);

            for (int i = 0; i < answer.length; i++) {
                answer[i] = answerList.get(i);
            }

            return answer;
        }

        public static void main(String[] args) {
            Solution sol = new Solution();

            System.out.println(sol.solution(new int[]{2, 1, 3, 4, 1}));
            System.out.println(sol.solution(new int[]{5, 0, 2, 7}));
        }
    }
}
728x90