https://programmers.co.kr/learn/courses/30/lessons/68644
[문제]
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
[제한 조건]
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
[코드]
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
// 중복 값을 허용하지 않는 hashSet 선언
Set<Integer> hashSet=new HashSet<Integer>();
// 서로 다은 인덱스에 있는 두 개의 수를 뽑아 더한 값을 hashSet에 저장
for(int i=0;i<numbers.length;i++)
for(int j=i+1;j<numbers.length;j++)
hashSet.add(numbers[i]+numbers[j]);
/*
* hashSet에서 값을 가져오기 위해서느 Iterator를 사용해야 한다.
* hashSet.iterator()로 hashSet을 iterator에 담은 후
* .next() 함수를 통해 값을 하나씩 뽑아내야 한다.
*/
Iterator<Integer> iter=hashSet.iterator();
int[] answer=new int[hashSet.size()];
int count=0;
while(iter.hasNext()) {
answer[count]=iter.next();
count++;
}
// 배열 값을 정렬하여 반환
Arrays.sort(answer);
return answer;
}
}
[고찰]
이번 문제는 값의 중복을 허용하지 않는 자료구조인 HashSet을 사용하면 중복을 고려하지 않고 문제를 해결할 수 있다. 단, HashSet에 있는 값을 가져오기 위해서는 Iterator를 사용해야 한다는 점만 주의하면 쉽게 해결할 수 있는 문제이다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스_Level1] 실패율_2019 카카오 신입 공채 (0) | 2021.07.16 |
---|---|
[프로그래머스_Level1] 3진법 뒤집기 (0) | 2021.07.16 |
[프로그래머스_Level1] 2016년 (0) | 2021.07.16 |
[프로그래머스_Level1] 가운데 글자 가져오기 (0) | 2021.07.16 |
[프로그래머스_Level1] [1차] 다트 게임_2018 카카오 신입 공채 (0) | 2021.07.15 |