글
#1 알고리즘 문제 풀기
코딩테스트
2021. 1. 3. 03:46
오늘은 해당 문제를 풀어볼 것이다.
이라고 가정을 하고 진행을 해봅시다.
내가 생각한 방법은 HashSet으로 중복을 제거된 상태의 객체를 만든 후 그 set을 List에 담고 그것을 배열에 담아서 리턴해주는 방식으로 진행을 하였다.
※ #1 HashSet에 서로 다른 index의 값을 넣어주기 ※
HashSet<Integer> set = new HashSet<Integer>();
for(int i=0; i<numbers.length;i++){
for(int i2=0; i2<numbers.length; i2++){
if(i == i2) {
continue;
}
set.add(numbers[i] + numbers[i2]);
}
}
return test(set);
☞ 이중for문을 돌면서 서로 다른 index에 있는 값들을 set에 넣어준다.
☞ HashSet은 중복된 값을 넣을 수 없기때문에 중복이 제거된 수만 넣어지게 된다.
☞ 리턴을 test 라는 함수에 인자값으로 던져준다.
※ #2 HashSet의 인자값을 배열형식으로 변환하기 ※
public static int[] test(HashSet set) {
System.out.println(set);
List<Integer> list = new ArrayList<Integer>(set);
Collections.sort(list);
int[] arr = new int[list.size()];
for(int i=0; i<list.size(); i++) {
arr[i] = list.get(i);
}
return arr;
}
☞ HashSet 을 List로 변환하기
☞ List에 있는 값들을 배열으로 변환하여 리턴시키기
방법은 간단합니다.
변환된 List를 for문을 돌면서 배열에 넣어주고 그 배열을 리턴시켜주면 끝입니다.
※ #3 전체 코드 ※
public static int[] solution(int[] numbers) {
HashSet<Integer> set = new HashSet<Integer>();
for(int i=0; i<numbers.length;i++){
for(int i2=0; i2<numbers.length; i2++){
if(i == i2) {
continue;
}
set.add(numbers[i] + numbers[i2]);
}
}
return test(set);
}
public static int[] test(HashSet set) {
System.out.println(set);
List<Integer> list = new ArrayList<Integer>(set);
int[] arr = new int[list.size()];
for(int i=0; i<list.size(); i++) {
arr[i] = list.get(i);
}
return arr;
}
◈ 햇갈렷던 부분 ◈
- 서로다른 index를 더하면 수많은 더한 값들은 어떻게 처리를 해야하는가?
- 중복된 값들은 어떻게 중복제거를 할 것인가?
- HashSet 을 어떻게 배열형식으로 리턴을 해주도록 할것인가?
위의 3개의 관점에서 햇갈렷던거 같습니다.
사람마다의 생각하는 것과 처리하는 것을 수많가지 이므로 이보다 더 좋은 처리방법or다른처리방법 댓글로 남겨주시면 감사하겠습니다.
'코딩테스트' 카테고리의 다른 글
#3 알고리즘 문제 풀기 (0) | 2021.01.05 |
---|---|
#2 알고리즘 문제 풀기 (0) | 2021.01.03 |