분명 코드플러스 강의에서 나온대로 했는데 왜 틀렸습니다가 뜰까요 ㅜㅠ
고수님들의조언 부탁드립니다.
#include<stdio.h>int d[1000000];int go(int n) { if (n == 1) return 0; // 1 이면 0반환 --> 한가지 예외사항 if (d[n] > 0) return d[n]; //memorization d[n] = go(n - 1) + 1; if (n % 2 == 0) { int temp = go(n / 2) + 1; if (d[n] > temp) d[n] = temp; } if (n % 3 == 0) { int temp = go(n / 3) + 1; if (d[n] > temp) d[n] = temp; } return d[n];}int main() { int x, n; scanf("%d", &x); n = go(x); printf("%d", n);}
댓글을 작성하려면 로그인해야 합니다.
yuio1213 6년 전
분명 코드플러스 강의에서 나온대로 했는데 왜 틀렸습니다가 뜰까요 ㅜㅠ
고수님들의조언 부탁드립니다.
#include<stdio.h>
int d[1000000];
int go(int n) {
if (n == 1) return 0; // 1 이면 0반환 --> 한가지 예외사항
if (d[n] > 0) return d[n]; //memorization
d[n] = go(n - 1) + 1;
if (n % 2 == 0) {
int temp = go(n / 2) + 1;
if (d[n] > temp) d[n] = temp;
}
if (n % 3 == 0) {
int temp = go(n / 3) + 1;
if (d[n] > temp) d[n] = temp;
}
return d[n];
}
int main() {
int x, n;
scanf("%d", &x);
n = go(x);
printf("%d", n);
}