Problem Solving/C++

백준 1110번 더하기 사이클 문제 ( C++ )

TakeKnowledge 2019. 7. 10. 17:59
반응형
 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 =

www.acmicpc.net

푸는데 시간이 좀 걸렸다. 

다 풀고 보니 문제를 꼼꼼히 읽지 않아서 헤맨 거였음..

 

반성의 의미로 포스팅! 우리 모두 요구 사항을 꼼꼼히 읽읍시다~

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
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
 
int main(void)
{
    int input;
    scanf("%d",&input);
    // 처음값을 입력 받는다
    
    int lnum = input;
    // 처음 값은 while  탈출비교를 위해 가지고 있어야 하니 입력값을 lnum에 옮긴다
    
    int lten,lone,rnum,rten,rone,cycle=0;
 
    // 한번은 돌아야 하니 (처음엔 lnum과 input이 같기 때문에) do-while문 사용
    do{
        lten=lnum/10;
        // 입력값을 10의 자리와
 
        lone=lnum%10;
        // 1의 자리로 나눈다
        
        rnum = lten + lone;
        // 둘을 더한 값을 구한다.
 
        rone=rnum%10;
        // 그 값의 1의 자리 수를 구한다.
        
        lnum = lone*10 + rone;
        // 그 전에 구해놨던 1의 자리 수를 10의 자리수로 올리고 뒤에 구한 1의 자리 수를 더한다
        
        cycle++;
        // cycle의 값을 1올린다
        
    }while(lnum!=input);
    // 조건 비교 반복
    
    printf("%d\n",cycle);
    // 반복을 빠져나오면 cycle을 출력한다
    
}
cs
반응형