문제 링크 : 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

+ Recent posts