[BOJ] 1463 1로 만들기 C++
문제
코드
#include <iostream>
using namespace std;
int d[10000000];
int main()
{
int n;
cin>>n;
d[1]=0;
for(int i=2;i<=n;i++)
{ d[i]=d[i-1]+1;
if(i%2==0 && d[i]>d[i/2]+1)
{
d[i]=d[i/2]+1;
}
if(i%3==0 && d[i]>d[i/3]+1)
{
d[i]=d[i/3]+1;
}
}
cout<<d[n];
return 0;
}
풀이
숫자 n을 1로 만드는 방법은 n-1 + 1 or n/2 + 1 or n/3 + 1 을 1로 만드는 것과 동일한것을 이용해줌, 다이나믹프로그래밍을 이용해 d[i]에 값을 저장하여 풀어주었다
Author And Source
이 문제에 관하여([BOJ] 1463 1로 만들기 C++), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@wjdals0507/BOJ-1463-1로-만들기-C
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <iostream> using namespace std; int d[10000000]; int main() { int n; cin>>n; d[1]=0; for(int i=2;i<=n;i++) { d[i]=d[i-1]+1; if(i%2==0 && d[i]>d[i/2]+1) { d[i]=d[i/2]+1; } if(i%3==0 && d[i]>d[i/3]+1) { d[i]=d[i/3]+1; } } cout<<d[n]; return 0; }
풀이
숫자 n을 1로 만드는 방법은 n-1 + 1 or n/2 + 1 or n/3 + 1 을 1로 만드는 것과 동일한것을 이용해줌, 다이나믹프로그래밍을 이용해 d[i]에 값을 저장하여 풀어주었다
Author And Source
이 문제에 관하여([BOJ] 1463 1로 만들기 C++), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@wjdals0507/BOJ-1463-1로-만들기-C
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
숫자 n을 1로 만드는 방법은 n-1 + 1 or n/2 + 1 or n/3 + 1 을 1로 만드는 것과 동일한것을 이용해줌, 다이나믹프로그래밍을 이용해 d[i]에 값을 저장하여 풀어주었다
Author And Source
이 문제에 관하여([BOJ] 1463 1로 만들기 C++), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wjdals0507/BOJ-1463-1로-만들기-C저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)