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과 비교하여 문제를 풀이할 수 있었다.