두 개 뽑아서 더하기

이준경·2021년 5월 6일
0

<나의 풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.HashSet;
import java.util.Iterator;
import java.util.Arrays;
 
class Solution {
    public int[] solution(int[] numbers) {
        HashSet<Integer> set = new HashSet<>();
        
        for(int i=0; i<numbers.length; i++){
            for(int j=i+1; j<numbers.length; j++){
                set.add(numbers[i]+numbers[j]);
            }
        }
        
        int[] answer = new int[set.size()];
        
        Iterator<Integer> it = set.iterator();
        int i=0;
        while(it.hasNext()){
            answer[i++]=it.next();
        }
        Arrays.sort(answer);
        return answer;
    }
}
 
cs
  1. numbers의 첫 요소를 다음 요소와 더하여 hashset에 대입. 반복
  2. hashset의 요소를 answer에 하나씩 대입. 반복
  3. answer 정렬 후 반환.

<다른사람풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
 
class Solution {
    public int[] solution(int[] numbers) {
        Set<Integer> sumNumber = new TreeSet();
 
        for(int i = 0; i < numbers.length-1; i++){
            for(int j = i+1; j < numbers.length; j++){
                sumNumber.add(numbers[i] + numbers[j]);
            }
        }
 
        int[] answer = new int[sumNumber.size()];
        int index = 0;
        Iterator itor = sumNumber.iterator();
        while(itor.hasNext()){
            answer[index] = (int)itor.next();
            index++;
        }
 
        return answer;
    }
}
cs

1.트리셋을 이용하여 정렬을 따로 하지않음.

0개의 댓글

관련 채용 정보