[문제]
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
[내 풀이]
내 풀이의 문제점 하나, 왜 list를 썼지?
list를 썼기때문에 중복 검사를 하는 과정을 거쳐야 했다.
문제점 둘, 왜 list의 stream 을 활용하지 않았나?
stream의 mapToInt()라는 함수를 생각도 못했다...
mapToInt()를 사용하면 Integer를 int로 형 변환하거나 list의 값을 Array로 옮기기 위해 또 for문을 돌리는 작업을 하지 않아도 된다.
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
int cnt = 0;
List<Integer> list = new ArrayList<>();
for (int before=0;before<numbers.length;before++){
for (int after=before+1;after<numbers.length;after++){
int addValue = numbers[before] + numbers[after];
if (!list.contains(addValue))
list.add(addValue);
}
}
list.sort(Comparator.naturalOrder());
answer = new int[list.size()];
for (int value : list){
answer[cnt] = value;
cnt++;
}
return answer;
}
}
[다른 사람 풀이 참고]
import java.util.*;
public class Solution {
public int[] solution(int[] numbers){
Set<Integer> set = new HashSet<>();
for (int before : numbers){
for (int after=before+1;after<numbers.length;after++){
set.add(numbers[before] + numbers[after]);
}
}
return set.stream().sorted().mapToInt(Integer::intValue).toArray();
}
}
<문제 출처>
programmers.co.kr/learn/courses/30/lessons/68644
'JAVA > Argorithm Test' 카테고리의 다른 글
# Level1 - 모의고사 (완전탐색) (0) | 2020.10.30 |
---|---|
# Level1 - 예산 (0) | 2020.10.30 |
# Level1 - [1차] 비밀지도 (0) | 2020.10.28 |
# Level1 - 크레인 인형 뽑기 (0) | 2020.10.27 |
자바 알고리즘 #Level1 약수의 합 (0) | 2016.07.12 |