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;
}