IT/알고리즘
2019 카카오 겨울 인턴 - 호텔 방 배정
HyungJin.Jeon
2020. 4. 27. 19:20
카카오 겨울 인턴 코딩테스트에 나왔던 호텔 방 배정 문제입니다.
이 문제를 푸는 방식은 많지만 효율성 고려를 위해서 hashMap을 사용해서 풀면 좋습니다.
hashMap<long, long>으로 선언하여 key값은 손님이 들어가고자 하는 방의 번호, value의 값은 key방에 들어가려 할 때 실제 들어 갈 수 있는 방 번호를 의미합니다.
public static long[] solution(long k, long[] room_number) {
int roomNumberCount = room_number.length;
long[] answer = new long[roomNumberCount];
Map<Long, Long> hotelRoom = new HashMap<Long, Long>();
for (int i = 0; i < roomNumberCount; i++) {
long wantRoomNumber = room_number[i];
if (!hotelRoom.containsKey(wantRoomNumber)) {
answer[i] = wantRoomNumber;
hotelRoom.put(wantRoomNumber, wantRoomNumber + 1);
} else {
ArrayList<Long> list = new ArrayList();
while (hotelRoom.containsKey(wantRoomNumber)) {
list.add(wantRoomNumber);
wantRoomNumber = hotelRoom.get(wantRoomNumber);
}
answer[i] = wantRoomNumber;
list.add(wantRoomNumber);
for (long l : list) {
hotelRoom.put(l, wantRoomNumber + 1);
}
}
}
return answer;
}