Haribo ML, AI, MATH, Algorithm

호텔 방 배정


import sys
sys.setrecursionlimit(10**6)

def solution(k, room_number):
    global pointer
    pointer = {}
    return [check_in(room) for room in room_number]

def check_in(room) :
    if room not in pointer :
        pointer[room] = room + 1
        return room
    pointer[room] = (avail := check_in(pointer[room]))
    return avail

알고리즘

체크인 할때 방이 가리키는 포인터의 방으로 체크인 하도록 한다.

1번방 체크인 시 2번방 배정해준 뒤 2번방 포인터 3번방으로

4번방 체크인 시 4번방 배정해준 뒤 4번방 포인터 5번방으로

7번방 체크인 시 9번방 배정해준 뒤 9번방 포인터 10번방으로

이런식으로 재귀적으로 배정할 방을 찾아줘서 배정해주고 포인터로 연결 시키면된다.

import sys
sys.setrecursionlimit(10**6)

def solution(k, room_number):
    global pointer
    pointer = {}
    return [check_in(room) for room in room_number]

def check_in(room) :
    if room not in pointer : # 빈방일 경우
        pointer[room] = room + 1
        return room
    pointer[room] = (avail := check_in(pointer[room])) # 빈방찾을 때 까지 재귀
    return avail

이전 포스트 스티커 모으기(2)

다음 포스트 쿠키 구입

Comments

Content