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

윤준혁·2024년 2월 24일

나의 풀이

import java.util.*;

class Solution {
    public int[] solution(int[] numbers) {
        List<Integer> list = new ArrayList<>(); // 1
        
        for (int i = 0; i < numbers.length; i++) { 
            for (int j = i + 1; j < numbers.length; j++) {
                int temp = numbers[i] + numbers[j]; // 2
                if (!(list.contains(temp))) list.add(temp); // 3
            }
        }
        
        Collections.sort(list); // 4
        
        int[] answer = list.stream().mapToInt(i->i).toArray(); // 5
        
        return answer;
    }
}

과정

  1. numbers를 담을 list를 만든다
  2. numbers안의 두 요소을 더하여 temp를 만든다
  3. list에 temp가 없다면(!(list.contains(temp))) list에 temp를 넣어준다
  4. list 오름차순 정렬
  5. ArrayList를 배열로 바꿔준다 (Java 8 이상에서 스트림으로 Integer배열을 int배열로 변환 가능)

다른 사람 풀이

import java.util.HashSet;
import java.util.Set;

class Solution {
     public int[] solution(int[] numbers) {
        Set<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]);
            }
        }

        return set.stream().sorted().mapToInt(Integer::intValue).toArray();
    }
}
  • Set 인터페이스를 구현하는 HashSet 객체를 만듬(Set은 중복된 값을 저장하지 않는 특성)

0개의 댓글