Algorithm/BruteForce

[백준 1476번] 날짜 계산

킹우현 2023. 5. 4. 15:45

E, S, M = map(int,input().split())

RESULT_RANGE = 15*28*19 + 1

for i in range(RESULT_RANGE):

    a, b, c = i%15 + 1, i%28 + 1, i%19 + 1

    if E == a and S == b and M == c:
        print(i + 1)
        break

이번 문제는 E, S, M 이라는 수를 가지는 년도를 나타낼 때, 주어진 E, S, M으로 표시되는 가장 빠른 년도를 구하는 문제이다.

다만, 여기서 주의해야할 점은 세 수는 모두 서로 다른 범위를 가진다는 점이다. 

 

이 문제의 풀이에 핵심은 '가능한 경우의 수를 모두 탐색해보는 완전 탐색, 즉 Brute Force 알고리즘을 사용해야 한다는 점''나머지를 활용하여 값을 비교한다는 점'이다.

 

따라서 모든 경우를 탐색하기 위해 범위를 15 x 28 x 19 + 1 로 설정하였고, 나머지를 통해 a, b, c를 만들어 E, S, M과 비교하여 문제를 풀이할 수 있었다.