๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“• STUDY/Algorithm

[C / C++] ๋ฐฑ์ค€ 1110๋ฒˆ - ๋”ํ•˜๊ธฐ ์‚ฌ์ดํด

๋ฐฑ์ค€ 1110๋ฒˆ : https://www.acmicpc.net/problem/1110

 

1748๋ฒˆ: ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ 1

์ฒซ์งธ ์ค„์— N(1 ≤ N ≤ 100,000,000)์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net


โœ… ๋ฌธ์ œ ์„ค๋ช…

์ด ๋ฌธ์ œ๋Š” 0~99 ์‚ฌ์ด์˜ ์ˆซ์ž N์„ ์ผ์ •ํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ณ„์† ๋”ํ•˜์—ฌ

๋‹ค์‹œ N์ด ๋˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค.

 

โšก ์˜ˆ๋ฅผ ๋“ค์–ด

1. N < 10 ์ด๋ผ๋ฉด?

: 0์„ ๋ถ™์—ฌ ๋‘ ์ž๋ฆฌ ์ˆ˜๋กœ ๋งŒ๋“ค๊ณ  ๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•œ๋‹ค.

 

ex) N = 5 -> 50 + ( 5 + 0 ) => 55

-> ( 5 + 5 = 10 ) => 50 + 0 = 50

-> ( 5 + 0 = 5 ) => 5

 

2. N >= 10 ์ด๋ผ๋ฉด?

: ์ฃผ์–ด์ง„ ์ˆ˜์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž๋ฆฌ ์ˆ˜ + ๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•œ ์ˆ˜์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž๋ฆฌ ์ˆ˜๋ฅผ

์ด์–ด ๋ถ™์—ฌ ์ƒˆ๋กœ์šด ์ˆซ์ž๋ฅผ ๋งŒ๋“ ๋‹ค.

 

 

ex) N = 26

-> ( 2 + 6 = 8 ) => 60 + 8 = 68

-> ( 6 + 8 = 14 ) => 80 + 4 = 84

-> ( 8 + 4 = 12 ) => 40 + 2 = 42

-> ( 4 + 2 = 6 ) => 20 = 6 = 26

๊ฒฐ๊ตญ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋”ํ•˜๋‹ค ๋ณด๋ฉด ๋‹ค์‹œ N์œผ๋กœ ๋Œ์•„์˜ค๊ฒŒ ๋˜๋Š”๋ฐ,

 

๋ช‡ ๋ฒˆ์„ ๋”ํ•ด์•ผ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ทธ ์‚ฌ์ดํด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด

์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชฉํ‘œ์ด๋‹ค.


โœ… ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช…

1. ์ˆซ์ž N์„ ์ž…๋ ฅ

2. 'ten = N'์˜ 10์˜ ์ž๋ฆฌ ์ˆ˜, 'one = N'์˜ 1์˜ ์ž๋ฆฌ ์ˆ˜ ์ €์žฅ

3. 'do{} while ();'์„ ํ†ตํ•ด 1๋ฒˆ ์ด์ƒ ๋Œ์•„๊ฐ€๋„๋ก ์‹ค์‹œ

 

[์˜ˆ์‹œ] 68 -> 6 + 8 = 14 -> 84

- one : ์ฃผ์–ด์ง„ ์ˆ˜์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž๋ฆฌ ์ˆ˜ (8)

 

- ten + one =:๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•œ ๊ฐ’์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž๋ฆฌ ์ˆ˜ (4)

1. one * 10 = 80 : 4์™€ ๋”ํ•  ์ˆ˜ ์žˆ๊ฒŒ 10์„ ๊ณฑํ•˜์—ฌ ๋‘์ž๋ฆฌ ์ˆ˜๋กœ ๋งŒ๋“ฆ

2. ( ten + one ) % 10  = 14 % 10 = 4

     : 10์˜ ์ž๋ฆฌ์™€ 1์˜ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋”ํ•˜์—ฌ 10์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€

3. n_copy = ( one * 10 ) + ( ( ten + one ) % 10 ) = 84

4. 3๋ฒˆ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์„ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณต -> ๋ฐ˜๋ณตํ•  ๋•Œ๋งˆ๋‹ค cycle++

5. n_copy๊ฐ€ n์ด ๋˜๋ฉด ์›๋ž˜ ์ˆ˜๋กœ ๋Œ์•„์™”๋‹ค๋Š” ๋œป์œผ๋กœ ํƒˆ์ถœ


โœ… ์ฝ”๋“œ

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int main(void) {
	int n;
	scanf("%d", &n); // ์ˆซ์ž N ์ž…๋ ฅ
	int n_copy, cycle = 0;
	/* ten์€ 10์˜ ์ž๋ฆฌ ์ˆ˜๋กœ 26์ด๋ฉด 2๋ฅผ ๋œปํ•จ */
	/* one์€ 1์˜ ์ž๋ฆฌ ์ˆ˜๋กœ 26์ด๋ฉด 6์„ ๋œปํ•จ */
	int ten = n / 10, one = n % 10;
	/* n_copy๊ฐ€ n์ด ๋˜๋ฉด ์›๋ž˜ ์ˆ˜๋กœ ๋Œ์•„์™”๋‹ค๋Š” ๋œป์œผ๋กœ ํƒˆ์ถœ */
	do {
		/* one = ์ฃผ์–ด์ง„ ์ˆ˜์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž๋ฆฌ ์ˆ˜ */
		/* ten + one = ๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•œ ๊ฐ’ */
		n_copy = one * 10 + (ten + one) % 10;
		/* ๋‹ค์Œ ์‚ฌ์ดํด ์ˆ˜ ๋งŒ๋“ค๊ธฐ */
		ten = n_copy / 10; 
		one = n_copy % 10;
		cycle++;
	} while (n_copy != n); 
	printf("%d\n", cycle);
	return 0;
}

 


https://github.com/2hyunjinn/Baekjoon/blob/main/Baekjoon_1110.cpp

 

GitHub - 2hyunjinn/Baekjoon

Contribute to 2hyunjinn/Baekjoon development by creating an account on GitHub.

github.com