Study/Java

[Java 자바] 프로그래머스 Lv 1 - 두 개 뽑아서 더하기

1.jun 2025. 1. 23. 11:03
728x90
반응형

 

 

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

목차
  1. 문제 설명
  2. 입출력 예시
  3. 문제 풀이

 

 


1. 문제 설명

 

 

728x90

 

문제 설명

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

 

 

제한사항

  • numbers의 길이는 2 이상 100 이하입니다.
  • numbers의 모든 수는 0 이상 100 이하입니다.

 

 

 

 

 


2. 입출력 예시

 

 

 

 

입출력 예시

#1 

2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.)
3 = 2 + 1 입니다.
4 = 1 + 3 입니다.
5 = 1 + 4 = 2 + 3 입니다.
6 = 2 + 4 입니다.
7 = 3 + 4 입니다.
따라서 [2,3,4,5,6,7] 을 return 해야 합니다.

 

#2

2 = 0 + 2 입니다.
5 = 5 + 0 입니다.
7 = 0 + 7 = 5 + 2 입니다.
9 = 2 + 7 입니다.
12 = 5 + 7 입니다.
따라서 [2,5,7,9,12] 를 return 해야 합니다.

 

 

 

 

 


3. 문제 풀이

반응형

 

문제 풀이

import java.util.*;

class Solution {
    public int[] 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]);
            }
        }
        
        // set을 array로 변환
        int[] answer = new int[set.size()];
        Iterator<Integer> iter = set.iterator();
        for(int i=0; i<set.size(); i++){
            answer[i] = iter.next();
        }
        
        return answer;
    }
}

 

 

 

 

728x90
반응형