httejyy1234   2년 전

C언어에서 계속 시간초과가 일어나요. 어디가 틀린지 몰르겠어요

jwkim6800   2년 전

11번째 줄에 e 를 N에 대입하여야 하는데 N에 e 를 대입하였습니다.

또한 N 입력 전에 대입을 하셨습니다.

N = e;
scanf("%d", &N);


scanf("%d", &N);

e = N;

으로 변경하셔야 합니다.

또한 10 이하의 숫자일 경우 곱하기 10을 하면 뒤에 0을 붙이게 됩니다.

따라서 곱하기 11을 하시는 것을 추천드립니다. ( 어짜피 앞자리 숫자는 버리게 되므로 )

마지막으로 0 일 경우에 11을 곱해도 한자리 숫자인데 이를 while 문에서 조건으로 거르기 힘듭니다.

따라서 출력할 때 0은 조건을 달아서 출력해줍니다.

최종적인 코드는 이렇게 되겠네요.

#include

int main() {
int N = 0;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;


scanf("%d", &N);
e = N;
if(N < 10)
{
N *= 11;
d++;
}
while(1)
{
a = N / 10;
b = N % 10;
c = (a + b) % 10;
N = (b*10) + c;
d++;
if(N==e)
break;
}
if (e==0)
printf("%d", 1);
else
printf("%d", d);
}

httejyy1234   2년 전

해결됬네요 감사합니다

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