프로그래머스 Level 1
🔒 두 개 뽑아서 더하기
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
numbers | result |
---|---|
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
입출력 예#1
[2,3,4,5,6,7]
을 return 해야 합니다.입출력 예#2
[2,5,7,9,12]
를 return 해야 합니다.import java.util.*;
import java.util.stream.Collectors;
class Solution {
public int[] solution(int[] numbers) {
List<Integer> answ = new ArrayList<Integer>();
for(int i=0; i<numbers.length; i++) {
for(int j=i+1; j<numbers.length; j++) {
answ.add(numbers[i] + numbers[j]);
}
}
answ = answ.stream().distinct().collect(Collectors.toList());
int[] answer = new int[answ.size()];
for(int i=0; i<answ.size(); i++){
answer[i] = answ.get(i);
}
Arrays.sort(answer);
return answer;
}
}
효율성 검사 있을까봐 조마조마했다😅
이중 for문을 돌면서 각 요소들을 모두 더한 후 가변길이 리스트 answ
에 삽입했다.
그리고 Stream
을 이용해서 중복 요소 제거를 했다.
정수형 배열 answer
에 answ
의 요소들을 넣어준 후 Arrays.sort()
로 오름차순 정렬을 하였다.
📑 List 중복 제거 참고 사이트