#22. [백준_C언어] 1110 : 더하기 사이클

 

 입력 코드 

#include <stdio.h>

main() {
	int N, result;
	scanf("%d", &N);

	result = N;

	int a, b, c, d;
	int count = 0;

	while (1) {
		a = N / 10, b = N % 10;
		c = (a + b) % 10;
		d = (b * 10) + c;

		N = d;
		count++;

		if (d == result)
			break;
	}

	printf("%d", count);
}

 

 코드 설명 

while문과 조건문을 이용하는 문제

#include <stdio.h>

main() {
	int N;
	scanf("%d", &N);

	int a, b;
	a = N / 10, b = N % 10;

	int i, count;


	printf("%d", count);
}

처음 구한 수에서 10으로 나눈 몫으로 십의 자리 수를 구하고, 10으로 나눈 나머지로 일의 자리 수를 구했는데 그다음에 계속 반복해서 대입하고 비교하는 걸 어떻게 해야 하지 생각하다가

#include <stdio.h>

main() {
	int N;
	scanf("%d", &N);

	int a[], b[];
	a[0] = N / 10, b[0] = N % 10;
	
	int i=0, count;

	while (a[0] == a[] && b[0] == b[]) {

	}

	printf("%d", count);
}

배열로 넣어서 while문으로 처음이랑 같은 수가 나올 때까지 count를 세보려고 했는데 그것도 어떻게 해야 할지 감이 안 잡혔다. 

#include <stdio.h>

main() {
	int N, result;
	scanf("%d", &N);

	result = N;

	int a, b, c, d;
	int count = 0;

	while (1) {
		a = N / 10, b = N % 10;
		c = (a + b) % 10;
		d = (b * 10) + c;

		N = d;
		count++;

		if (d == result)
			break;
	}

	printf("%d", count);
}

풀이를 찾아보니까 십의 자리 수와 일의 자리 수로 분리하고, 처음 주어진 수의 일의 자리 수와 두 수(처음 주어진 수의 일의 자리 수와 십의 자리 수)를 더한 합의 일의 자리 수를 이어붙인다. 이걸 한 사이클로 보고 while문을 사용해도 되고 do while문을 사용해도 된다.

 

 

참고한 사이트

yongku.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98BOJ-1110%EB%B2%88-%EB%8D%94%ED%95%98%EA%B8%B0-%EC%82%AC%EC%9D%B4%ED%81%B4C%EC%96%B8%EC%96%B4

 

[백준 알고리즘/BOJ] 1110번 더하기 사이클(C언어)

안녕하세요, 츄르 사려고 코딩하는 집사! 코집사입니다. 이번 글은 백준 알고리즘 1110번 더하기 사이클 C언어 문제입니다. 1. 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음

yongku.tistory.com

aorica.tistory.com/35

 

[백준] 1110번 더하기 사이클 C / C++ 문제 풀이 while문

문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그

aorica.tistory.com

jisuhan.tistory.com/entry/%EB%B0%B1%EC%A4%80-1110%EB%B2%88-%EB%8D%94%ED%95%98%EA%B8%B0-%EC%82%AC%EC%9D%B4%ED%81%B4-c%EC%96%B8%EC%96%B4

 

[백준] 1110번: 더하기 사이클 c언어

백준 1110번 더하기 사이클 문제 링크 문제에서 파악해야 할 핵심요소 및 마인드맵 int 자료형의 십, 일의 자리 숫자는 어떻게 구할 수 있는가? String형으로 변환 후 [0],[1]의 자리로 구하고, int형으

jisuhan.tistory.com

 

 

 문제 출처 

www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net