알고리즘/문제 풀이

1476번: 날짜 계산

Themion 2021. 12. 8. 13:19

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

 

1476번: 날짜 계산

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타

www.acmicpc.net

지구, 태양과 달을 나타내는 수의 주기가 15, 28, 19이므로 지구, 태양과 달을 나타내는 수가 같아지는 주기는 저 세 수의 최소공배수인 7980년이다. 컴퓨터는 1부터 7980까지 충분히 빠른 시간 안에 계산할 수 있으므로 1부터 모든 수에 대해 지구, 태양과 달을 나타내는 수를 계산해 세 수가 일치할 때 답을 출력하면 된다.

#include <cstdio>

int main() {
    // E, S, M: 각각 지구, 태양, 달을 나타내는 수
    // ans : 구하고자 하는 년도 저장, add : ans에 더할 가중치
    int E, S, M, ans = 0, add = 1;
    scanf("%d %d %d", &E, &S, &M);

    // 나머지 연산이 용이하게끔 수를 1씩 빼 준다
    E -= 1;
    S -= 1;
    M -= 1;

    // 지구, 태양, 달을 나타내는 수가 같은 년도는 7980년에 한 번 온다
    // 빠른 시간 안에 계산할 수 있는 범위이므로 완전 탐색 실행
    while (ans % 15 != E || ans % 28 != S || ans % 19 != M) ans++;

    // 나머지 연산을 위해 E, S, M에 1을 빼 주었으므로 ans에 1을 더한 값을 출력
    printf("%d\n", ans + 1);

    return 0;
}

'알고리즘 > 문제 풀이' 카테고리의 다른 글

1504번: 특정한 최단 경로  (0) 2021.12.08
1495번: 기타리스트  (0) 2021.12.08
1475번: 방 번호  (0) 2021.12.08
1463번: 1로 만들기  (0) 2021.12.08
1461번: 도서관  (0) 2021.12.08