[Python] 프로그래머스 : 호텔 대실
https://school.programmers.co.kr/learn/courses/30/lessons/155651
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
테스트 케이스 9, 17에서 계속 막혔었는데,,, 만일 객실 종료 시간이 60분이 넘었을 경우 (예 : 10:59) 처리를 잘 못해주고 있었다.
시간 transform은 transform 함수를 이용해서 간단하게 처리한다. solution 함수에서는 for문을 돌며 새 방이 필요한지, 청소로만으로 충분히 이용 가능한지를 판별해준다. 그리디 문제이기 때문에 가장 이용이 빨리 끝나는 방에 가장 이용을 빨리 하려는 사람을 배정해주려 했다. 개인적으로 백준 퇴사(https://www.acmicpc.net/problem/1931) 문제와 접근 방법도, 로직도 유사하다고 생각한다. 다른 점은 그저... transform을 사용해도 되냐, 안 되냐의 차이인 것 같음
def transform(time):
if int(time[3:]) + 10 >= 60:
return str(int(time[:2]) + 1).zfill(2) + str(int(time[3:]) + 10 - 60).zfill(2)
return time[:2] + str(int(time[3:]) + 10).zfill(2)
def solution(book_time):
answer = 0
book_time.sort(key = lambda x: x[0])
rooms = [] #마지막 시간을 저장할 리스트
for idx in range(len(book_time)):
start_time = book_time[idx][0][:2] + book_time[idx][0][3:] # 새 예약의 대실 시작 타임
if idx == 0:
rooms.append(transform(book_time[0][1]))
answer += 1
print(rooms)
else:
for i in range(len(rooms)):
if rooms[i] > start_time: # 새 방이 필요한 경우
answer += 1
rooms.append(transform(book_time[idx][1]))
rooms.sort()
break
else: #방 청소 후 대실 가능
rooms[i] = transform(book_time[idx][1])
rooms.sort()
break
return answer
'알고리즘 > programmers' 카테고리의 다른 글
| [Python / Javascript] 프로그래머스 : 숫자 짝꿍 (0) | 2024.01.25 |
|---|---|
| [Python/Javascript] 프로그래머스 : 완주하지 못한 선수 (0) | 2024.01.24 |
| [Python/Javascript] 프로그래머스 2020 카카오 인턴십 : 키패드 누르기 (0) | 2024.01.09 |
| [Python/Javascript] 프로그래머스 2022 KAKAO TECH INTERNSHIP 성격 유형 검사하기 (1) | 2024.01.09 |
| [Python/Javascript] 프로그래머스 : 2019 KAKAO BLIND RECRUITMENT 실패율 (0) | 2024.01.04 |
TAGS.
