

1) 첫번쨰 나의 코드
def dfs(x,y,n,count):
if x==y: #정지조건
return count
elif x>y: #정지조건
return -1
else: #재귀함수 돌림
add = dfs(x+n,y,n,count+1)
mux_2 = dfs(x*2, y, n, count+1)
mux_3 = dfs(x*3, y, n, count+1)
result_list = [add, mux_2, mux_3] #3개의 값중 작은것을 골라야됨
new_result_list = [] #result_list 중에서 -1인것은 제외시킴
for i in result_list:
if i != -1:
new_result_list.append(i)
if new_result_list:#만약 new_result_list 존재시 최솟값을 리턴
return min(new_result_list)
else:#없으면 만들수 없다는 것이기에 -1을 리턴
return -1
def solution(x,y,n):
answer = dfs(x,y,n,0)
return answer
print(solution(2,5,4))

런타임 에러 .... 뭔가 단단히 잘못됨........하.......하 포기할까 .....하
2) 수정 코드
def solution(x,y,n):
answer = 0
dp = set()
dp.add(x)
while dp:
if y in dp:
return answer
else:
dp_y = set()
for i in dp:
if i+n <= y:
dp_y.add(i+n)
if i*2 <= y:
dp_y.add(i*2)
if i*3 <= y:
dp_y.add(i*3)
dp = dp_y
answer+=1
answer = -1
#print(answer)
return answer
solution(2,5,4)

느낀점 : 진짜 아직 너무 부족하다.....
'코딩테스트 파이썬 > 파이썬 프로그래머스 2단계' 카테고리의 다른 글
| 롤케이크 자르기 (0) | 2023.05.20 |
|---|---|
| 다리를 지나는 트럭 (0) | 2023.05.20 |
| 2개 이하로 다른 비트 (0) | 2023.05.16 |
| 2 x n 타일링 (0) | 2023.05.15 |
| 뒤에 있는 큰 수 찾기 (0) | 2023.05.15 |