✔ 두 개 뽑아서 더하기
문제 분석하기
반복문을 통해 서로 다른 인덱스에 있는 두 개의 수를 뽑아 집합에 저장한 후, 배열로 옮겨 오름차순으로 정렬하여 반환
손으로 풀어보기
- 반복문을 통해 서로 다른 인덱스에 있는 두 개의 수를 뽑아 집합에 저장
- 같은 값의 경우 제거하기 위해 집합을 사용
- 집합에 있는 값들을 배열에 저장한 후, 배열을 오름차순으로 정렬하여 반환
슈도코드 작성하기
numbers(정수 배열)
set(서로 다른 인덱스에 있는 두 개의 수를 뽑아 연산한 숫자들)
for(i -> 0부터 numbers - 1까지) {
for(j -> i + 1부터 numbers까지) {
set에 numbers[i] + numbers[j] 추가
}
}
answer(서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수의 배열)
answer에 set을 오름차순 정렬하면서 담기
answer 반환
코드 구현하기
/**
* 68644) 두_개_뽑아서_더하기
*/
public class L043_68644 {
// numbers(정수 배열)
public int[] solution(int[] numbers) {
// set(서로 다른 인덱스에 있는 두 개의 수를 뽑아 연산한 숫자들)
Set<Integer> set = new HashSet<>();
// 인덱스가 다른 두 개의 정수 뽑기
for (int i = 0; i < numbers.length - 1; i++) {
for (int j = i + 1; j < numbers.length; j++) {
// set에 numbers[i] + numbers[j] 추가
set.add(numbers[i] + numbers[j]);
}
}
// answer(서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수의 배열)
// answer에 set을 오름차순 정렬하면서 담기
int[] answer = set.stream().sorted().mapToInt(Integer::intValue).toArray();
// answer 반환
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
L043_68644 solution = new L043_68644();
int[] numbers = { 2, 1, 3, 4, 1 };
int[] result = solution.solution(numbers);
System.out.println(Arrays.toString(result));
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[70128] 내적 (0) | 2024.01.01 |
---|---|
[68935] 3진법 뒤집기 (0) | 2023.12.31 |
[67256] 키패드 누르기 (0) | 2023.12.31 |
[64061] 크레인 인형뽑기 게임 (0) | 2023.12.30 |
[42889] 실패율 (0) | 2023.12.30 |