[프로그래머스] 호텔방 배정 (파이썬)

dongEon·2023년 4월 4일
0

난이도 : LV 4

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/64063

문제해결 아이디어

  • 다른사람들의 풀이를 참고해서 풀었다.
  • 재귀함수를 활용해서 풀었는데 딕셔너리를 이용해서 해당 키가 존재하면 key + 1 을 재귀함수로 넘겨주었다.
  • 여기서 딕셔너리[방번호] = 방번호 + 1 만 저장해줄 경우 [1,1,1,.... ,1,1] 이면 계속 1번부터 순회하기 때문에
  • 재귀함수로 찾은 빈방을 리턴값을 받아서 딕셔너리[방번호] = 리턴값 + 1로 수정해준다.

소스코드

import sys
sys.setrecursionlimit(10 ** 8)

def find_room(num, room):
    if num not in room:
        room[num] = num + 1
        return num
    
    empty = find_room(room[num], room)
    room[num] = empty+1 # 방번호 수정
    return empty
        

def solution(k, room_number):
    room = dict()
    ans = []
    
    for i in room_number:
        res = find_room(i, room)
        ans.append(res)   

    return ans
        
        
profile
개발 중에 마주한 문제와 해결 과정, 새롭게 배운 지식, 그리고 알고리즘 문제 해결에 대한 다양한 인사이트를 공유하는 기술 블로그입니다

0개의 댓글