입력 코드
#include <stdio.h>
main() {
int N, result;
scanf("%d", &N);
result = N;
int a, b, c, d;
int count = 0;
while (1) {
a = N / 10, b = N % 10;
c = (a + b) % 10;
d = (b * 10) + c;
N = d;
count++;
if (d == result)
break;
}
printf("%d", count);
}
코드 설명
while문과 조건문을 이용하는 문제
#include <stdio.h>
main() {
int N;
scanf("%d", &N);
int a, b;
a = N / 10, b = N % 10;
int i, count;
printf("%d", count);
}
처음 구한 수에서 10으로 나눈 몫으로 십의 자리 수를 구하고, 10으로 나눈 나머지로 일의 자리 수를 구했는데 그다음에 계속 반복해서 대입하고 비교하는 걸 어떻게 해야 하지 생각하다가
#include <stdio.h>
main() {
int N;
scanf("%d", &N);
int a[], b[];
a[0] = N / 10, b[0] = N % 10;
int i=0, count;
while (a[0] == a[] && b[0] == b[]) {
}
printf("%d", count);
}
배열로 넣어서 while문으로 처음이랑 같은 수가 나올 때까지 count를 세보려고 했는데 그것도 어떻게 해야 할지 감이 안 잡혔다.
#include <stdio.h>
main() {
int N, result;
scanf("%d", &N);
result = N;
int a, b, c, d;
int count = 0;
while (1) {
a = N / 10, b = N % 10;
c = (a + b) % 10;
d = (b * 10) + c;
N = d;
count++;
if (d == result)
break;
}
printf("%d", count);
}
풀이를 찾아보니까 십의 자리 수와 일의 자리 수로 분리하고, 처음 주어진 수의 일의 자리 수와 두 수(처음 주어진 수의 일의 자리 수와 십의 자리 수)를 더한 합의 일의 자리 수를 이어붙인다. 이걸 한 사이클로 보고 while문을 사용해도 되고 do while문을 사용해도 된다.
↓↓↓ 참고한 사이트
문제 출처
'C' 카테고리의 다른 글
#24. [백준_C언어] 3052 : 나머지 (0) | 2021.01.11 |
---|---|
#23. [백준_C언어] 2577 : 숫자의 개수 (0) | 2021.01.11 |
#21. [백준_C언어] 11050 : 이항 계수 1 (0) | 2021.01.09 |
#20. [백준_C언어] 10250 : ACM 호텔 (0) | 2021.01.08 |
#19. [백준_C언어] 2798 : 블랙잭 (0) | 2021.01.08 |