문제 링크 : https://www.acmicpc.net/problem/1110
해결방법 :
문제에서 주어진 규칙대로 새로운 수를 만들기위해 몇번 반복 하는지를 세어주면 답이다.
1. 새로운 수를 십의자리와 일의 자리로 나눈다.
2. 나눈 수를 더한다. (십의자리숫자 + 일의자리숫자)
3. 1번에서 구한 일의 자리와 2번에서 구한 수의 일의 자리 값을 붙인다. 즉 새로운 수를 구한다.
(붙인다는 것은 1번의 일의자리를 10의자리로 만들기위해 * 10 한 후 2번에서 구한 일의자리를 그대로 더하면 된다.)
4. 1~3번을 반복한다. 새로운수가 처음 주어진 수와 같을 때까지!
이때, 싸이클 횟수가 답이기 때문에 반복 할때마다 카운트를 하나씩 증가해준다.
소스코드)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include<iostream> //더하기 사이클 using namespace std; int main() { int N; int ten; int before; int after; int cnt = 1; bool isSame = true; int newnum = 0; scanf("%d", &N); newnum = N; while (isSame) // isSame은 newnum과 처음 N이 같으면 false과 됨 { ten = newnum / 10; before = newnum % 10; // 현재숫자의 일의자리 : before after = ten + before; after = after % 10; // 더하고나서의 일의자리 : after newnum = (before * 10) + after; if (newnum == N) isSame = false; else cnt++; } printf("%d\n", cnt); } | cs |
반응형
'PS > 백준' 카테고리의 다른 글
1003번 피보나치 함수 (0) | 2018.12.02 |
---|---|
1065번 한수 (0) | 2018.11.16 |
2448번 별 찍기 - 11 (0) | 2018.11.12 |
1966번 프린터 큐 (0) | 2018.10.28 |
7576번 토마토 (0) | 2018.10.24 |