코딩 테스트/프로그래머스

프로그래머스 - 호텔 방 배정 문제 (자바)

programmers.co.kr/learn/courses/30/lessons/64063

 

코딩테스트 연습 - 호텔 방 배정

 

programmers.co.kr

map의 경우 

<희망하는 호실, 배정될 호실>로

room_number를 순회하면서 map값을 추가 및 수정하여서 값을 구합니다.

 

처음 배정 되는 경우 희망하는 호실에 배정해주고 바로 다음 해당 호실을 희망하는 경우 +1에 배정된다는 것을 고려해보시면 이해가 되실겁니다.

import java.util.HashMap;
import java.util.Map;

// 프로그래머스 호텔 방 배정 문제
class Solution {
    static Map<Long, Long> map = new HashMap<>();
    public long[] solution(long k, long[] room_number) {
        long[] answer = new long[room_number.length];

        for (int i = 0; i < room_number.length; i++) {
            answer[i] = getEmptyRoom(room_number[i]);
        }
        return answer;
    }

    public long getEmptyRoom(long wantRoomNumber) {
        if(!map.containsKey(wantRoomNumber)) {
            map.put(wantRoomNumber, wantRoomNumber + 1);
            return wantRoomNumber;
        }

        long emptyRoom = getEmptyRoom(map.get(wantRoomNumber));
        map.put(wantRoomNumber, emptyRoom);
        return emptyRoom;
    }
}