본문 바로가기

코딩테스트/C++

[백준 C++] 1476번: 날짜 계산

https://www.acmicpc.net/problem/1476

 

준규가 사는 이상한 나라의 계산법에 따르면 1년을 1 1 1이라 부르는데 각각 E, S, M이라 부르고 범위는 다음과 같다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19)

 

범위가 넘어가면 1로 치환되는데 이를 이용하여 몇년인지 세는 문제이다.

 

입력으로 ESM 세 숫자가 들어오고 출력으로는 우리나라의 날짜계산법으로 년도를 출력하면 된다.

 

맞을때까지 1씩 그냥 증가 시켜보기로 하였다. 일치하지 않는다면 또 1을 증가시키고 1을 증가시키는 중 각각의 최대값에 도달하면 1로 바꿔주는 식을 짜보자.

 

#include <iostream>
#include <algorithm>
using namespace std;
int E, S, M, Y = 1;
int main(int argc, char* argv[])
{
	int e = 1, s = 1, m = 1;
	cin >> E >> S >> M;
	while (1) {
		if (E == e && S == s && M == m) {
			cout << Y << '\n';
			return 0;
		}
		e++;
		s++;
		m++;
		Y++;
		if (e > 15)
			e = 1;
		if (s > 28)
			s = 1;
		if (m > 19)
			m = 1;
	}
 
	return 0;
}

간단하다.