프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제

제출한 코드
import java.util.*;
class Solution {
public TreeSet<Integer> solution(int[] numbers) {
TreeSet<Integer> set = new TreeSet<>();
for (int i = 0; i < numbers.length; i++) {
for (int j = i + 1; j < numbers.length; j++) {
set.add(numbers[i] + numbers[j]);
}
}
return set;
}
}
풀이
처음에는 아래와 같이 List를 사용해서 제출했었다.
import java.util.*;
class Solution {
public List<Integer> solution(int[] numbers) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < numbers.length; i++) {
for (int j = i + 1; j < numbers.length; j++) {
if (!list.contains(numbers[i] + numbers[j]))
list.add(numbers[i] + numbers[j]);
}
}
Collections.sort(list);
return list;
}
}
List는 중복을 허용하기 때문에 if절로 중복 검사를 해줬어야 했고, 마지막으로 Collections.sort() 로 해당 List를 정렬해주어야 했다.
반환되어야 하는 결과값이 중복을 허용하지 않기 때문에 Set도 고려를 했었지만, Set의 경우 순서를 보장하지 않아 List로 문제를 풀었었다.
제출 후 다른 사람들의 풀이를 확인했더니 순서를 보장하는 TreeSet이 있다는 것을 발견하게 되었다.
TreeSet은 Set의 종류 중 하나로, 중복을 허용하지 않지만, 정렬이 가능한 Set이다.
기본적으로 오름차순으로 정렬되므로 TreeSet을 사용하게 되면 중복검사를 하는 if절도, 정렬해야 하는 sort() 메서드도 사용하지 않아도 됐다.
'프로그래머스' 카테고리의 다른 글
| [프로그래머스] 138477번 - 명예의 전당 (1) [Java] (0) | 2026.05.20 |
|---|---|
| [프로그래머스] 142086번 - 가장 가까운 같은 글자 [Java] (0) | 2026.05.18 |
| [프로그래머스] 42748번 - K번째수 [Java] (0) | 2026.05.13 |
| [프로그래머스] 12915번 - 문자열 내 마음대로 정렬하기 [Java] (0) | 2026.05.12 |
| [프로그래머스] 81301번 - 숫자 문자열과 영단어 [Java] (0) | 2026.05.11 |