티스토리 뷰
다이나믹 프로그래밍
더보기
문제
정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.
- X가 3으로 나누어 떨어지면, 3으로 나눈다.
- X가 2로 나누어 떨어지면, 2로 나눈다.
- 1을 뺀다.
정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.
입력
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
출력
첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.
1. count 배열을 만들고, 0번째, 1번째 값을 0으로 지정해준다.
2. count 배열을 2부터 돌아가며 각각으로 나는 최솟값과 비교하며 답을 찾는다.
x = int(input())
count = [0] * 10 * x
count[0] = 0
count[1] = 0
for i in range(2, x + 1):
count[i] = count[i-1] + 1
if i % 3 == 0:
count[i] = min(count[i], count[i//3] + 1)
if i % 2 == 0:
count[i] = min(count[i], count[i//2] + 1)
print(count[x])'알고리즘 > 코딩테스트' 카테고리의 다른 글
| [백준] 1032 명령 프롬프트 | 파이썬 (0) | 2021.06.30 |
|---|---|
| [프로그래머스] K번째수 | 파이썬 (0) | 2021.04.06 |
| [백준] 11047 동전 0 | 파이썬 (0) | 2021.03.04 |
| [백준] 11399 ATM | 파이썬 (1) | 2021.03.04 |
| [백준] 2839 설탕 배달 | 파이썬 (0) | 2021.03.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 격파르타 후기
- 격파르타 합격후기
- 미주
- 99클럽
- 격파르타 장점
- 스킨
- 다이어리
- 티스토리스킨
- 코딩테스트 준비
- 코딩테스트
- til
- sqld 자격증 합격
- 휴학
- 정보처리기사
- 토익
- 항해99
- html
- 모바일 소프트웨어
- 곱창밴드
- 정보처리기사실기
- 정처기
- 미국주식
- 넷플릭스
- 정처기실기
- 스크런치
- 개발자 취업
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
글 보관함