문제
정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.
X가 3으로 나누어 떨어지면, 3으로 나눈다.
X가 2로 나누어 떨어지면, 2로 나눈다.
1을 뺀다.
정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.
입력
첫째 줄에 1보다 크거나 같고, 10^6보다 작거나 같은 정수 N이 주어진다.
출력
첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.
코드
C++ 17 (최적화 전)
C++17 (최적화 후)
C# 6.0
Python 3
복기
DP 문제 중 처음으로 솔루션을 보지 않고 푼 문제라서 뿌듯하다. 솔직히 저기서 더 최적화가 이뤄질 줄은 몰랐는데, 다음에는 좀 더 고찰해봐야겠다.
'Outdated > Algorithm Solution' 카테고리의 다른 글
[BOJ] 1911번 흙길 보수하기 (0) | 2020.02.09 |
---|---|
[BOJ] 1149번 RGB거리 (0) | 2020.02.07 |
[BOJ] 1080번 행렬 (0) | 2020.02.04 |
[BOJ] 9663번 N-Queen (0) | 2020.01.22 |
[BOJ] 2230번 수 고르기 (0) | 2020.01.17 |