본문 바로가기

PS/프로그래머스

[프로그래머스] 숫자 변환하기 링크 문제 설명 입력으로 1 이상의 정수 x 와 y 가 주어진다. 주어진 아래 연산으로 x를 y로 만든다. x에 n을 더합니다 x에 2를 곱합니다. x에 3을 곱합니다. x를 y로 변환하는 최소 연산 횟수를 구한다. 변환할 수 없다면 -1을 반환한다. 제한사항 def solution(x: int, y: int, n: int) -> int: ... 1 ≤ x ≤ y ≤ 1,000,000 1 ≤ n < y 풀이 DP를 응용해 풀었다. 크기가 y+1인 배열을 만들어 INF로 초기화한다. +1은 직관적으로 값과 인덱스를 일치시키기 위함이다. 각 배열의 원소는 해당 인덱스까지 연산을 수행한 횟수를 나타낸다. 문제 입력으로 주어진 x=10, n=5, y=40을 예시로하면 아래 그림과 같다. 시작점인 DP[x] 는 ..
[프로그래머스] 호텔 대실 링크 문제 설명 입력으로 [입실 시간, 퇴실 시간] 쌍으로 이루어진 리스트가 주어진다. 예약 시간동안 그 방은 다른 사람이 사용할 수 없으며 청소시간이 있기 때문에 퇴실시간이 지난 후 10분 뒤에 새로운 손님을 받을 수 있다. 예약 목록이 주어졌을 때 필요한 최소 객실의 수를 구하는 문제이다. 제한사항 def solution(book_time: List) -> int: answer = 0 return answer 1 ≤ book_time의 길이 ≤ 1,000 book_time[i]는 ["HH:MM", "HH:MM"]의 형태로 이루어진 배열입니다 [대실 시작 시각, 대실 종료 시각] 형태입니다. 시각은 HH:MM 형태로 24시간 표기법을 따르며, "00:00" 부터 "23:59" 까지로 주어집니다. 예약 ..