[백준/Python] - 1463 1로 만들기

2025. 5. 8. 23:58·백준[파이썬]
728x90
반응형
SMALL

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

 

제출코드

N = int(input())
#연산횟수를 저장하는 memo
memo = [0] * (N+1)
for i in range(2,N+1):
    #이전값에서 1을 뺀 값을 연산횟수로 칭함
    memo[i] = memo[i-1] +1
    # i가 2로 나누어떨어지면(2를 1로만드는 최소 연산횟수를 구함)
    if i % 2== 0:
        memo[i] = min(memo[i], memo[i // 2] + 1)
    if i % 3 == 0:
        memo[i] = min(memo[i], memo[i // 3] + 1)
print(memo[N])

 

초기화 부분

 

memo = [0] * (N+1)

우리는 여기서 1부터 시작을 해야한다.

그러므로 1부터 10까지의 idx가 필요하다 그럼

0 1 2 3 4 5 6 7 8 9 10까지의 idx는 11개이다.

따라서 N+1로 둔다.

memo의 각 idx값의 뜻은 숫자 i를 1로 만드는데 필요한 연산 횟수이다.

→ 숫자 1을 1로 만드는 연산 횟수는? 1번 memo에 들어가게 된다.

    memo[i] = memo[i-1] +1
    # i가 2로 나누어떨어지면(2를 1로만드는 최소 연산횟수를 구함)
    if i % 2== 0:
        memo[i] = min(memo[i], memo[i // 2] + 1)
    if i % 3 == 0:
        memo[i] = min(memo[i], memo[i // 3] + 1)

이전 연산 횟수에서 1을 더한 값을 i번째 idx에 일단 넣는다.

그리고 i에 2를 나눈 나머지가 0이면 i에 2를 나눈값과 i번째 값을 비교해서 작은 값을 정한다.

 

EX

i 가 10일때를 예로 들어보자

i-1번째 즉, 9번째까지는 memo에 다 포함이 되어있다. 

memo = [0, 0, 1, 1, 2, 3, 2, 3, 3, 2, 3]
       #   1, 2, 3, 4, 5, 6, 7, 8, 9 ,10

해당하는 숫자를 1로 만들기까지 필요한 연산횟수이다.

10일때는 memo[i-1]번째 9번째값에서 1을 더한 값 3이 들어간다.

그리고 10이 2로 나눠지기때문에 5의 연산횟수와 9번째에서 3을 더한 값과 비교를 한다.

왜? 10은 9로 갈 수도 있고 5로 갈 수도있기때문에

거기에서 min값을 10에다가 넣는다.


어우 어렵네요....

뭔가 흐름은 전부 비슷한거 같은데

728x90
반응형
LIST

'백준[파이썬]' 카테고리의 다른 글

[백준/Python] - 11053 가장 긴 증가하는 부분수열  (1) 2025.05.11
[백준/Python] - 2156 포도주 시식  (0) 2025.05.10
[백준/Python] - 1912 연속합  (0) 2025.05.07
[백준/Python] - 1904 01타일  (0) 2025.05.07
[백준/Python] - 12865 평범한 배낭  (0) 2025.05.06
'백준[파이썬]' 카테고리의 다른 글
  • [백준/Python] - 11053 가장 긴 증가하는 부분수열
  • [백준/Python] - 2156 포도주 시식
  • [백준/Python] - 1912 연속합
  • [백준/Python] - 1904 01타일
코린이 파닥거리기
코린이 파닥거리기
    반응형
    250x250
  • 코린이 파닥거리기
    코린이 파닥거리기의 블로그
    코린이 파닥거리기
  • 전체
    오늘
    어제
    • 분류 전체보기 (116) N
      • 백준[파이썬] (47) N
      • Spring (31)
      • CS (1)
      • 자바 (4)
      • 백준[자바] (20)
      • 프로그래머스 (5)
      • 토이프로젝트 (1)
      • SWEA (2)
      • MSA (4) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SpringBoot
    재귀
    파이썬
    스프링
    테스트코드
    Java
    db
    스프링부트
    프로그래머스
    MSA
    JWT
    SWEA
    백준
    spring
    컨테이너
    JPA
    누적합
    코딩테스트
    스프링 부트와 AWS로 혼자 구현하는 웹 서비스
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코린이 파닥거리기
[백준/Python] - 1463 1로 만들기
상단으로

티스토리툴바