컴퓨터 공학 기초/알고리즘 (브루트포스)
백준 1476(날짜 계산)
JongSeok_12
2020. 8. 19. 15:06
https://www.acmicpc.net/problem/1476
1476번: 날짜 계산
준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타��
www.acmicpc.net
지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19)
우리가 알고있는 1년은 준규가 살고있는 나라에서는 1 1 1로 나타낼 수 있다. 1년이 지날 때마다, 세 수는 모두 1씩 증가한다. 만약, 어떤 수가 범위를 넘어가는 경우에는 1이 된다.
위와 같은 조건의 지구, 해, 달 을 나타내는 수가 주어질때 해당 수에 해당하는 최소의 년도를 구하는 것이다. 따라서 나머지 연산을 통해 년도에 해당하는 수 % 15 or 28 or 19 를 수행하게 된다면 만약 기준을 넘어가는 년도가 발생한다면 획득한 나머지를 통해 현재 몇년도를 나타내는지 알 수 있다.
풀이 :
#include <iostream>
using namespace std;
int main(){
//freopen_s(new FILE*, "tes.text", "r", stdin);
int sunT, moonT, earthT;
int sun = 0; int moon = 0; int earth = 0;
cin >> earthT >> sunT >> moonT;
int cnt = 0;
while (1){
cnt++;
if (cnt == 7980){
int f = 1;
}
earth = cnt % 15; sun = cnt % 28; moon = cnt % 19;
if (earth == 0) earth = 15;
if (sun == 0) sun = 28;
if (moon == 0) moon = 19;
if (earth == earthT && sun == sunT && moon == moonT){
cout << cnt << endl;
return 0;
}
}
}