반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

1로 만들기(백준) 본문

코딩 테스트(Python)/백준, 프로그래머스

1로 만들기(백준)

5_hyun 2022. 6. 22. 22:55

https://www.acmicpc.net/problem/1463

 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net

 

내 풀이(문제를 잘 읽자)

n = int(input())

d = [0] * (10**6 + 1)

for i in range(2, n+1):
    d[i] = d[i-1] + 1

    if i % 3 == 0:
        d[i] = min(d[i], d[i//3] + 1)
    if i % 2 == 0:
        d[i] = min(d[i], d[i//2] + 1)
print(d[n])

이 문제도 어제 "이것이 취업을 위한 코딩테스트다"에서 푼 문제와 굉장히 유사하다. 사실 처음엔 풀지 못해서 어제 공부한 것을 다시 봤다. 그리고 나중에 풀었는데 런타임 에러가 떴었다. 알고보니 이 문제의 입력 범위는 10**6인데 나는 d 배열의 범위를 3001로 설정해줘서 틀렸었다. 이 문제는 보텀업 문제이다. 따라서 숫자가 낮은 거부터 최소한의 연산으로 만들 수 있도록 하면서 코딩을 하면 된다.

728x90
반응형

'코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글

9095 1, 2, 3 더하기  (0) 2022.06.26
17219 비밀번호 찾기  (0) 2022.06.25
1654 랜선 자르기  (0) 2022.06.18
2805 나무 자르기  (0) 2022.06.17
1316 그룹 단어 체커  (0) 2022.06.13
Comments