kkw564   1년 전

아래 코드로 실행하면 에러가 나는 테스트가 어떤건가요..?

kesakiyo   1년 전

22를 넣었을 때 출력이 6이 나옵니다.

위 코드를 따라가보면

22 -> 11 -> 10 -> 5 -> 4 -> 2 -> 1

이렇게 6번의 과정을 거치게 됩니다.

하지만 좀더 최적의 방법이 존재를 합니다.

예를 들자면 22 -> 21 -> 7 -> 6 -> 2 -> 1 이렇게 5번의 과정을 거칠 수 있지요.

다른 접근방법을 필요로 합니다.

kkw564   1년 전

3배수로 나누기위한 -1들을 처리해주고 2의 배수에서도 마찬가지로 코드를 넣었는데


#include <stdio.h>

int main()

{

int cnt = 0,n;

scanf("%d",&n);

while(n != 1)

{

while(n % 3 == 0){ n = n / 3; cnt++;}

if(n != 1){ n = n - 1; cnt++;}

while(n % 3 == 0){ n = n / 3; cnt++;}

while(n % 2 == 0){ n = n / 2; cnt++;}

if(n != 1){ n = n - 1; cnt++;}

}

printf("%d",cnt);

return 0;

}


억지인가요..?

댓글을 작성하려면 로그인해야 합니다.