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 |
반응형