-
백준 1476(날짜 계산)컴퓨터 공학 기초/알고리즘 (브루트포스) 2020. 8. 19. 15:06
https://www.acmicpc.net/problem/1476
지구를 나타내는 수를 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; } } }
'컴퓨터 공학 기초 > 알고리즘 (브루트포스)' 카테고리의 다른 글
백준 10971 (외판원 순회 2) (0) 2020.08.19 백준 10819 (차이를 최대로) (0) 2020.08.19 백준 16197( 두 동전) (0) 2020.08.18 백준 16928 (뱀과 사다리게임) (0) 2020.08.17 백준 14889 (스타트와 링크) (0) 2020.08.17