Algorithm

[Programmers/Java] 두 개 뽑아서 더하기

patrck_jjh 2025. 3. 19. 20:29

 

 

Link

https://school.programmers.co.kr/learn/courses/30/lessons/68644?language=java

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

 


 

 

 

import java.util.*;

class Solution {
    public List<Integer> solution(int[] numbers) {

        HashSet<Integer> answer = new HashSet<Integer>();

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

        List<Integer> last_answer = new ArrayList<>(answer);
        Collections.sort(last_answer);

        return last_answer;

    }
}

 

 

- i는 처음(i=0)부터 j는 i의 다음(j=i+1) 부터 이중반복문을 돌리며 2개씩 뽑아 더하는 모든 경우의 수를 커버한다

 

- Set을 이용하여 중복을 제거한다

 

- 정렬하기위해 List<Integer>타입으로 전환하고 Collections 클래스의 sort()메서드 활용해 오름차순 정렬한다

 


 

 

 

- return 타입을 int[]에서 List<Integer>로 수정했는데도 정답이 되는이유?

 

- Collections는 Object를 상속받는 클래스로서 정렬(sorting), 섞기(shuffle), 탐색(searching) 등의 알고리즘 메서드 포함한다. 

cf) Collection은 Set, List, Queue 등 인터페이스의 상위 인터페이스이고 collection은 데이터 집합이나 그룹 의미