본문 바로가기

Programmers

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

📌 문제

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

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

📌 코드

package programmers;

import java.util.*;

public class Lv1_Pro_220701_3 { // 두개 뽑아서 더하기
    public List<Integer> solution(int[] numbers) {

        Set<Integer> set = new LinkedHashSet<>(); // 1

        for (int i = 0; i < numbers.length; i++) { // 2
            for (int j = 0; j < numbers.length; j++) {
                if (i != j) {
                    set.add(numbers[i] + numbers[j]);
                }
            }
        }
        List<Integer> list = new ArrayList<>(set); // 3
        Collections.sort(list); // 4

        return list;
    }

	// 도움 코드
    public static void main(String[] args) {
        int[] numbers = {5, 0, 2, 7};
        Lv1_Pro_220701_3 s = new Lv1_Pro_220701_3();

        System.out.println(s.solution(numbers));
    }
}

📌 풀이

  1. 중복 없는 값을 저장하기 위해 Set 인터페이스 생성
  2. 2 중 for문을 활용하여  i와 j 가 같지 않을 때만 Set에 저장
  3. 오름 차순으로 정렬을 해야 하는데 Set에는 순서가 없으므로 List 인터페이스에 set 값 저장
  4. Collections.sort 메서드를 활용하여 값 저장하고 list 리턴