티스토리 뷰

백준 스터디

백준 1476번 '날짜 계산' Python

박완희버서커 2025. 6. 18. 19:13
반응형

🔢 백준 1476번 "날짜 계산" — 주기 순환 시뮬레이션으로 푸는 방법

세 개의 달력이 서로 다른 주기로 돌아간다면,
언제 셋이 동시에 다시 시작점을 맞추게 될까요?
이 문제는 단순한 조건 반복이지만, 가장 직관적인 반복 시뮬레이션 방식으로 쉽게 풀 수 있습니다.

📘 문제 설명 요약

문제 링크: https://www.acmicpc.net/problem/1476

달력에는 다음과 같은 3개의 수가 존재합니다.

  • E: 지구의 연도 (1 ~ 15)
  • S: 태양의 연도 (1 ~ 28)
  • M: 달의 연도 (1 ~ 19)

세 수 (E, S, M)이 주어졌을 때,
해당 연도가 처음으로 동시에 일치하는 가장 빠른 연도를 구하는 문제입니다.


💡 접근 아이디어

이 문제는 사실상 세 개의 독립적인 주기를 갖는 숫자가 한꺼번에 맞춰지는 최소 시점을 구하는 문제입니다.
어떤 복잡한 수학을 적용하지 않아도, 단순하게 세 값을 하나씩 증가시키며 비교하는 방식으로 해결 가능합니다.

즉:

  • 처음은 (1, 1, 1)에서 시작
  • 매년 E, S, M은 각자의 주기에 따라 1씩 증가
  • E > 15 → 1로, S > 28 → 1로, M > 19 → 1로 돌아감
  • 이 과정을 반복하다가 입력값 (E, S, M)과 일치하는 시점을 찾으면 종료

✅ 최종 파이썬 코드

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

E1, S1, M1 = 1, 1, 1
year = 1

while (E1 != E) or (S1 != S) or (M1 != M):
    E1 += 1
    S1 += 1
    M1 += 1

    if E1 > 15:
        E1 = 1
    if S1 > 28:
        S1 = 1
    if M1 > 19:
        M1 = 1

    year += 1

print(year)

🧩 코드 구조 설명

1. 입력 받기

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

공백 기준으로 세 수 입력 받기


2. 시작값 초기화

E1, S1, M1 = 1, 1, 1
year = 1

날짜는 항상 (1, 1, 1)에서 시작
year는 경과 연도 (정답) 저장용


3. while 루프: 목표가 될 때까지 반복

while (E1 != E) or (S1 != S) or (M1 != M):

세 값 중 하나라도 다르면 반복
모두 같아지면 멈춤


4. 주기 증가 및 되감기

E1 += 1
S1 += 1
M1 += 1

if E1 > 15: E1 = 1
if S1 > 28: S1 = 1
if M1 > 19: M1 = 1

한 해가 지나면 E, S, M 각각 1씩 증가
주기 넘으면 다시 1부터 시작


5. 연도 증가

year += 1

루프 1번 돌 때마다 1년 경과


✅ 예시 입력/출력

입력:
1 16 16

출력:
16

(1, 1, 1)에서 시작
15년 지나면 E는 다시 1, S와 M은 16에 도달
총 16년째 되는 해에 조건 만족


🔍 핵심 포인트 요약

항목 설명
문제유형 반복문, 주기성, 조건 비교
시간복잡도 O(N), 최악 15×28×19 = 7980
핵심로직 세 수 각각을 반복 증가 → 비교
쉬운 풀이 직접 순회하며 맞을 때까지 반복

✅ 마무리

이 문제는 복잡한 수학 없이도 풀 수 있는 단순한 순환 시뮬레이션 문제입니다.
가장 중요한 점은 세 수가 각기 다른 주기를 가진다는 것이고, 이를 정확하게 증가 → 되돌리기 규칙으로 처리하면 됩니다.

초보자에게는 반복문과 조건 비교 연습으로도 매우 좋은 문제입니다.
추가로 이 문제는 세 수의 최소 공통시점이라는 수학적인 주제와도 연결되니, 다음 단계에서 최소공배수(LCD) 접근법도 도전해보시길 추천드립니다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함
반응형