https://school.programmers.co.kr/learn/courses/30/lessons/154538
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
x, y, n이 주어진다.
+n, *2, *3연산으로 x를 y로 변환하여야 한다.
최소연산횟수를 구하라. (만약 x를 y로 변환할 수 없다면 -1)
전형적인 DP문제라고 생각했고 역시 DP로 풀 수 있었다.
근데 나머지 연산자 %와 몫 연산자 //를 헷갈려서 좀 헤맸다 ^^;; 바보
def solution(x, y, n):
dp = [-1]*(y+1)
dp[x] = 0
for i in range(x+1, y+1):
if i-n >= 0 and dp[i-n] != -1:
dp[i] = dp[i-n]+1
if i % 2 == 0 and dp[int(i / 2)] != -1:
dp[i] = (dp[i//2]+1) if dp[i] == -1 else min(dp[i], dp[i//2] + 1)
if i % 3 == 0 and dp[int(i / 3)] != -1:
dp[i] = (dp[i//3]+1) if dp[i] == -1 else min(dp[i], dp[i//3] + 1)
return dp[y]
[SW Expert Academy] 16002. 합성수 방정식 | 구현 | 파이썬, 소스코드, 정답 (0) | 2023.05.17 |
---|---|
[SW Expert Academy] 15758. 무한 문자열| 구현 | 파이썬, 소스코드, 정답 (0) | 2023.05.15 |
[프로그래머스] 154539. 뒤에 있는 큰 수 찾기| 스택 | 파이썬, 소스코드, 정답 (2) | 2023.05.11 |
[프로그래머스] 154540. 무인도 여행| BFS | 파이썬, 소스코드, 정답 (1) | 2023.05.10 |
[프로그래머스] 155651. 호텔 대실 | 정렬, 우선순위큐 | 파이썬, 소스코드, 정답 (1) | 2023.05.09 |