![[백준 1110번] 더하기 사이클 (C)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCuP7W%2Fbtrpq8VpWzw%2FxEjKBImRu0KPgUcccqzimK%2Fimg.png)
[백준 1110번] 더하기 사이클 (C)알고리즘2022. 1. 2. 21:35
Table of Contents
문제
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
코드1
#include <stdio.h>
int main(void)
{
int n, chaN, tenth, units, sum;
// tenth는 십의 자리, units는 일의 자리를 의미함
int cnt = 0;
printf("0~99 사이의 수를 입력하시오 : ");
scanf_s("%d",&n, sizeof(n));
if ((n >= 0) && (n <= 99)) {
chaN = n;
do {
cnt++;
tenth = chaN / 10;
units = chaN % 10;
sum = tenth + units;
chaN = units * 10 + sum % 10;
} while (n != chaN);
printf("%d", cnt);
}
return 0;
}
코드2
아래 코드는 visual studio에서 scanf_s를 사용해 짠 코드이므로, 백준에서는 실행 안됩니다
1. -1을 입력할때까지 반복
2. 범위 밖의 값을 입력하면 exit(EXIT_FAILURE)으로 종료시킴
위의 두 옵션을 추가하였습니다.
#include <stdio.h>
#include <stdlib.h> //EXIT_FAILURE가 정의된 헤더파일
int main(void)
{
int n, chaN, cnt, tenth, units, sum;
// tenth는 십의 자리, units는 일의 자리를 의미함
while (1) {
cnt = 0;
//1를 입력하지 않는 이상 무한반복되므로 cnt를 0으로 다시 초기화
printf("0~99 사이의 수를 입력하시오 : ");
scanf_s("%d",&n, sizeof(n));
if (n == -1) {
printf("프로그램을 종료합니다.");
break;
}
else {
if ((n >= 0) && (n <= 99)) {
chaN = n;
//처음 do while문을 실행할 때의 chaN을 초기화시켜주기 위함
do {
cnt++;
tenth = chaN / 10;
units = chaN % 10;
sum = tenth + units;
chaN = units * 10 + sum % 10;
} while (n != chaN);
printf("%d\n\n", cnt);
}
else {
fprintf(stderr, "n0~99 사이의 숫자를 입력해주세요");
exit(EXIT_FAILURE);
}
}
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[백준 2775번] 부녀회장이 될테야 (c) (0) | 2022.01.06 |
---|---|
[백준 1152번] 단어의 개수 (c) (0) | 2022.01.05 |
[백준 1157번] 단어공부 (c) (0) | 2022.01.04 |
[백준 10809번] 알파벳 찾기 (c) (0) | 2022.01.03 |
[백준 4344번] 평균은 넘겠지 (C, 이중포인터 이용) (0) | 2022.01.02 |
@blog_bbg :: bbg
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!