๐Ÿ“ Coding Test Study/Algorithm Problem

[Baekjoon][C++] 1476๋ฒˆ ๋‚ ์งœ๊ณ„์‚ฐ ๋ฌธ์ œ์„ค๋ช… ๋ฐ ์ฝ”๋“œ

ibelieveinme 2021. 3. 3. 01:49
728x90
 

1476๋ฒˆ: ๋‚ ์งœ ๊ณ„์‚ฐ

์ค€๊ทœ๊ฐ€ ์‚ฌ๋Š” ๋‚˜๋ผ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ๋„์™€ ๋‹ค๋ฅธ ๋ฐฉ์‹์„ ์ด์šฉํ•œ๋‹ค. ์ค€๊ทœ๊ฐ€ ์‚ฌ๋Š” ๋‚˜๋ผ์—์„œ๋Š” ์ˆ˜ 3๊ฐœ๋ฅผ ์ด์šฉํ•ด์„œ ์—ฐ๋„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ฐ๊ฐ์˜ ์ˆ˜๋Š” ์ง€๊ตฌ, ํƒœ์–‘, ๊ทธ๋ฆฌ๊ณ  ๋‹ฌ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ง€๊ตฌ๋ฅผ ๋‚˜ํƒ€

www.acmicpc.net

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

์ค€๊ทœ๊ฐ€ ์‚ฌ๋Š” ๋‚˜๋ผ๋Š” ์—ฐ๋„๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ E, S, M ์„ธ ๋ฌธ์ž๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

๊ฐ๊ฐ์˜ ๋ฌธ์ž๊ฐ€ ๊ฐ€์ง€๋Š” ๋ฒ”์œ„๋Š” 1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19 ์ด๋‹ค.

E, S, M์ด ์ฃผ์–ด์งˆ ๋•Œ,  E S M์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์—ฐ๋„๋ฅผ ์ถœ๋ ฅํ•˜์ž.

 

โ–ท ๋ฌธ์ œํ’€์ด

์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋…„๋„๋Š” 15 * 28 * 19 = 7980๋…„๊นŒ์ง€ ์ด๋ฏ€๋กœ

๋ธŒ๋ฃจํŠธํฌ์Šค ๋ฐฉ๋ฒ•์œผ๋กœ 1๋…„ ๋ถ€ํ„ฐ 7980๋…„๊นŒ์ง€ ๊ตฌํ•˜๋‹ค๊ฐ€ ์ •๋‹ต๊ณผ ๊ฐ™์•„์ง€๋Š” ์ˆœ๊ฐ„์„ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

 

์ด ๋•Œ, ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ E, S, M์˜ ๊ฐ’์€

year mod 15 = E,

year mod 28 = S,

year mod 19 = M ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ(๋‚˜๋จธ์ง€ ๊ฐ’)

 

1๋…„ ๋ถ€ํ„ฐ 7980๋…„๊นŒ์ง€ ์—ฐ๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚ฌ ๋•Œ,

ํ˜„์žฌ ์—ฐ๋„ year๋ฅผ year % 15 && year % 28 && year % 19 ๋กœ ๊ณ„์‚ฐํ–ˆ์„ ๋•Œ,

๊ทธ ๊ฐ’๋“ค์ด ์ฃผ์–ด์ง„ E, S, M์˜ ๊ฐ’๊ณผ ๋ชจ๋‘ ์ผ์น˜ํ•œ๋‹ค๋ฉด ํ˜„์žฌ์˜ ์—ฐ๋„๊ฐ€ ์ •๋‹ต ์—ฐ๋„์ด๋‹ค.

 

โ–ท ์‹œ๊ฐ„๋ณต์žก๋„

ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋…„๋„๋ฅผ N์ด๋ผ ํ•˜๋ฉด, N๊ฐ€์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค.

 

โ–ท ์ •๋‹ต์ฝ”๋“œ

#include <iostream>
using namespace std;

void Input();
void CalculateYear(int E, int S, int M);

int main() {
	Input();
	return 0;
}

void Input() {
	int E, S, M;
	cin >> E >> S >> M;
	CalculateYear(E, S, M);
}

void CalculateYear(int E, int S, int M) {
	int e = 1, s = 1, m = 1;
	for (int year = 1; ; year++) {
		if (e % 15 == E % 15 &&
			s % 28 == S % 28 &&
			m % 19 == M % 19){
			cout << year;
			break;
		}e++, s++, m++;
	}
}
728x90