해당 알고리즘 자료는 제가 직접 푼 것도 있지만 다른 분들의 풀이과의 비교를 통해 더 나은 알고리즘을 공부하기 위해 정리한 것들입니다.
https://programmers.co.kr/learn/courses/30/lessons/64063
풀이 : 이 문제는 효율성 접근이 중요한 문제로 탐색이 빠른 HashMap을 이용하는 것이 좋다.
import java.util.*;
class Solution {
public long[] solution(long k, long[] room_number) {
HashMap<Long, Long> map = new HashMap<Long, Long>();
long[] answer = new long[room_number.length];
for (int i = 0; i < answer.length; i++) {
answer[i] = solve(room_number[i], map);
}
return answer;
}
private static long solve(long r, HashMap<Long, Long> map) {
if (!map.containsKey(r)) {
map.put(r, r + 1);
return r;
}
long c = solve(map.get(r), map);
map.put(r, c);
return c;
}
}