티스토리 뷰
이번 포스팅은 백준 알고리즘 사이트의 1110번 더하기 사이클 문제를 C 언어로 코딩해보도록 하겠습니다. 아래 url로 접속하시면 문제를 볼 수 있습니다.
https://www.acmicpc.net/problem/1110
이번 포스팅은 지난 포스팅과 같은 단계로 if문 사용해보기 단계 마지막 문제입니다.
이 문제의 경우 100보다 작은 수 하나를 입력 받아 각 자리 수를 더해 1의 자리 수를 새로운 수의 1의 자리에, 원래 수의 1의 자리를 10의 자리로 만들어 계속해서 더해가다 입력 받은 수와 같은 수가 나올 때까지의 횟수를 구하는 문제입니다.
이를 좀 더 쉽게 그림으로 표현한 것입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
void main() {
int input, tmp = 0, ten, one, res = 0, cnt = 0;
scanf("%d", &input);
tmp = input;
while (1) {
if (tmp < 10) ten = 0;
else ten = tmp / 10;
one = tmp % 10;
res = ten + one;
cnt++;
ten = tmp % 10;
one = res % 10;
tmp = (ten * 10) + one;
if (tmp == input)
break;
}
printf("%d", cnt);
}
|
우선 사이클을 구할 수를 입력 받을 input 변수와 사이클을 돌리기 위한 tmp, 각 자리의 수를 저장할 ten과 one, 십의 자리 수와 일의 자리 수를 더해 저장할 res 변수와 사이클 수를 구할 cnt를 0으로 초기화 해줍니다.
input을 입력 받고, input 값을 tmp에 전달하여 줍니다.
while문을 무한 반복시키고, 만약 tmp 값이 10보다 작으면, 즉 한자리 수 일 때는 십의 자리 수를 저장하는 ten 변수에 0을 넣아줍니다. 그렇지 않을 때는 ten에 tmp/10을 한 값을 넣어 십의 자리 수를 저장해주고, one에는 tmp%10의 값을 저장해 일의 자리 수를 넣어줍니다. ten과 one에 저장된 수를 res를 통해 더해주고, cnt를 증가시켜 사이클을 1회 증가시켜줍니다.
그런 다음 새로운 수의 조합을 만들기 위해 ten에 tmp%10의 값, 즉 원래 수의 일의 자리를 넣어주고, one에는 새로운 값의 일의 자리를 넣어준 후, tmp에 각 자리를 더해 만든 새로운 수를 저장하여 줍니다.
if문을 사용해 tmp의 값과 원래 입력 받은 input 값이 같으면 while문을 멈추기 위한 break함수를 사용해 멈춰주고, 그때까지의 cnt값 즉 사이클 횟수를 출력해주시면 됩니다.
다음 포스팅에서는 다음 단계의 문제를 풀어보도록 하겠습니다.
다음 포스팅에서 봐요 :))
'BaekJoon > C' 카테고리의 다른 글
[BaekJoon/C] 백준 1065번 한수 (0) | 2019.05.29 |
---|---|
[BaekJoon/C] 백준 4673번 셀프 넘버 (0) | 2019.05.18 |
[BaekJoon/C] 백준 4344번 평균은 넘겠지 (0) | 2019.05.18 |
[BaekJoon/C] 백준 1546번 평균 (0) | 2019.04.06 |
[BaekJoon/C] 백준 10871번 X보다 작은 수 (0) | 2018.12.31 |
- Total
- Today
- Yesterday
- C 코딩
- Git Bash
- 우분투 18.04
- 구글 애드센스 후기
- ubuntu
- Google Adsense
- github
- 백준 알고리즘
- python
- python 코딩
- Ubuntu 18.04
- webhacking.kr
- 백준
- 승인 후기
- webhacking
- tistory blog
- 웹해킹
- Oldzombie
- 우분투
- c
- ubuntu 18.04 LTS
- 구글 애드센스 설치
- GIT
- 구글
- 백준 코딩
- 구글 애드센스 승인
- 구글 애드센스
- Python 언어
- C 언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |