⏱소요 시간 - 1시간 30분
🔑문제 해결
전체적인 부분은 쉽게 풀었는데 바보 같이 헤맸던 부분 ---> int j = i + 1
(기준이 되는 수는 고정해두고, 비교 대상이 되는 수들이랑 비교할 때는 기준이 되는 수는 제외하니까 i + 1 !!!!)
배열에서 중복되는 값은 제거해야하므로 자동으로 제거하기 위해 set에 저장했다.
그리고 set을 list로 변환하고 list를 다시 배열로 변환했다. (리턴값이 배열이기 때문)
🔎소스 코드
set -> list 변환
List<Integer> list = new LinkedList<>(set);
list -> Array 변환
int[] answer = list.stream().mapToInt(i->i).toArray();
package step1;
import java.util.*;
// 두 개 뽑아서 더하기
public class Ex02 {
public static void main(String[] args) {
int[] numbers = { 5, 0, 2, 7 };
System.out.println(solution(numbers));
}
public static int[] solution(int[] numbers) {
int[] answer = {};
Set<Integer> set = new HashSet<>();
for(int i = 0; i < numbers.length; i++) { // 기준이 되는 수
for(int j = i+1; j < numbers.length; j++) { // # int j = i + 1
set.add(numbers[i] + numbers[j]);
}
}
List<Integer> list = new LinkedList<>(set); // set -> list로 변환
Collections.sort(list); // list 정렬
answer = list.stream().mapToInt(i->i).toArray(); // list -> int[]로 변환
return answer;
}
}
'ALGORITHM' 카테고리의 다른 글
[프로그래머스 Java] 모의고사 (0) | 2021.01.08 |
---|---|
[프로그래머스 Java] 완주하지 못한 선수 (0) | 2021.01.08 |
List <-> int[] (0) | 2021.01.07 |
[프로그래머스 Java] 크레인 인형뽑기 게임 (0) | 2021.01.07 |
[프로그래머스 Java] 해시 - 전화번호 목록 (0) | 2021.01.05 |