1476번 문제 풀이 : 완전탐색 알고리즘

LiterallyME·2025년 2월 16일
0

codingTest

목록 보기
8/9

1. 문제 분석

한 문장 요약

세 개의 수 E, S, M이 주어질 때, 1년부터 시작해서 (E, S, M)과 일치하는 첫 번째 연도를 찾는 문제

입출력 정리

입력 조건

  • 세 개의 정수 E, S, M이 입력한다.
  • 1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19

출력 조건

  • 입력과 처음으로 동일한 연도(지구기준) 출력

필요한 알고리즘

  • 완전 탐색

    1. 일일이 비교해야 정답을 아는가? → Yes
    2. 최적화(수학적 방식)이 있는가? → No (주기는 있지만 규칙 X)
    3. 입력 범위가 완전탐색이 가능한가? → Yes

    => 완전탐색 알고리즘 필요


2. 의사 코드

  1. year = 1로 설정 (1년부터 시작)
  2. while True 반복문 실행
    1. 현재 year에서 (E, S, M)이 입력값과 일치하는지 확인
    2. 일치하면 year 출력 후 종료
    3. 일치하지 않으면 year + 1 증가 후 다시 확인

3. 코드

# 입력
E, S, M = map(int, input().split())
year = 1  # 연도 초기화

# 년도를 추가하면서 완전탐색
while True:
    # 원하는 값과 일치하는지 확인
    if (year - 1) % 15 + 1 == E and (year - 1) % 28 + 1 == S and (year - 1) % 19 + 1 == M:
        print(year)
        break
    year += 1
  • 실제 값과 맞추기 위해 -1, +1 적용

4. 마무리

알게 된 점

  • 모든 경우를 확인해야 할 때, 범위가 크지 않다면 완전탐색을 선택하는 것이 효과적이다.

0개의 댓글