class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
Arrays.sort(emergency);
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 1; i <= emergency.length; i++) {
map.put(emergency[i - 1], i);
}
for (int i = 0; i < answer.length; i++) {
answer[i] = map.get(i + 1);
}
return answer;
}
}
처음 문제를 봤을 때, HashMap을 활용해서 풀면 되겠다고 생각했다.
Hash Map은 key 와 value를 한 쌍으로 가지니까, 각각 응급도와 emergency의 요소 값을 넣어서
최종적으로 answer[i] = map.get(i) 와 같은 식으로 int[] answer의 요소를 map의 값을 가져와 채워넣는 식이었다.
하지만 이를 실행해보니 NPE(NullPointException)이 발생했다.
문제는 변경된 코드가 내가 작성한 코드와 완전히 같다는 것이었다.
그래서 둘이 완전히 똑같은 코드인데 어떻게 된건지 물었더니
갑자기 도돌이표가 되어버렸다.
여기저기 검색해본 결과 해당 문제는 순서가 중요한 자료구조 중 선입선출이 특징인 queue 사용하여 간편하게 풀 수 있다는걸 알았다.(queue를 사용해 푸는 방법을 굳이 올리진 않겠다.)
출제자의 의도와는 많이 엇나간것 같지만 개인적으로 map을 이용해서 풀 수 없다고는 생각되지 않는데, 어떻게 풀어나가야 맞을지 고민이 된다...
해당 부분에 대한 피드백을 받았다
이렇게 하고 테스트를 돌려보니
오름차순으로 정렬해서 그런지 순서가 반대로 나왔다!
그래서 내림차순 정렬을 하려고 정렬 부분을 Arrays.sort(emergency, Collections.reverseOrder());로 바꿔줬는데
위와 같은 오류가 발생했다.
Comparator로도 역시 동일한 오류가 발생한다.
'각종 문제들' 카테고리의 다른 글
[프로그래머스] 코딩테스트 입문 - 모스부호(1) (0) | 2023.04.12 |
---|---|
[프로그래머스] 코딩테스트 입문 - 구슬을 나누는 경우의 수 (0) | 2023.04.12 |
배포 자동화 중 오류 해결 (0) | 2023.04.04 |
[프로그래머스] 코딩테스트 입문 - 옷가게 할인 받기 (0) | 2023.04.03 |
[프로그래머스] 코딩테스트 입문 - 최빈값 구하기 (0) | 2023.03.30 |