
[프로그래머스] 두 개 뽑아서 더하기알고리즘2024. 4. 15. 19:05
Table of Contents
문제 설명
정수 배열 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] |
풀이
numbers의 범위가 작아서 모두 탐색하기로 결정했다.
1. list에 모든 합을 담는다.
2. distinct()로 중복을 제거하고 sorted()로 정렬한다.
2. int 배열로 바꿔서 리턴한다.
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
List<Integer> list = new ArrayList<>();
for(int i = 0; i < numbers.length - 1; i++) {
for(int j = i + 1; j < numbers.length; j++) {
list.add(numbers[i] + numbers[j]);
}
}
int[] result = list.stream()
.distinct()
.sorted()
.mapToInt(Integer::intValue)
.toArray();
return result;
}
}
다른 사람들의 풀이를 보니 Set을 이용한 풀이가 많았다.
나도 처음엔 Set을 생각했지만, 책에서 distinct()를 이용해서 중복을 제거한 것이 떠올라서 위 풀이처럼 진행했다.
원래 IDE로 알고리즘 풀이를 했는데, 오랜만에 프로그래머스 환경에서 푸니 생각보다 메서드가 떠오르지 않아서 검색을 많이 했다😅
IDE로 코딩테스트를 보지 않으니까 프로그래머스 환경에 익숙해지도록 노력해야겠다.
'알고리즘' 카테고리의 다른 글
| [묘공단] 1주차 학습 기록 (배열, ArrayList) (0) | 2024.04.21 |
|---|---|
| [프로그래머스] 올바른 괄호 (1) | 2024.04.19 |
| [프로그래머스] 실패율 (0) | 2024.04.18 |
| [프로그래머스] 행렬의 곱셈 (0) | 2024.04.17 |
| [프로그래머스] 모의고사 (0) | 2024.04.16 |

@clapp :: Clap 개발블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!