반응형
Notice
Recent Posts
Recent Comments
«   2024/12   »
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 31
Archives
Today
Total
관리 메뉴

UP

[백준 1476 : PYTHON] 날짜 계산 본문

알고리즘/완전탐색 (브루트 포스, Brute force)

[백준 1476 : PYTHON] 날짜 계산

cijbest 2021. 1. 22. 12:50

문제 풀기 : 1476번

 

1476번: 날짜 계산

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

www.acmicpc.net

문제

수 3개를 이용해서 연도를 나타낸다.

지구, 태양, 달을 나타내는 수이며 지구의 수는 E, 태양의 수는 S, 달의 수는 M이다.

(1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19)

제한된 범위를 넘어가면 1로 초기화된다.

E, S, M이 주어졌을 때 연도로 몇 년인지 구한다.

예) 1 15 15 = 16년

문제풀이

모든 경우의 수를 전부 찾는 완전탐색 문제이다.

전체를 탐색하는데 15 x 28 x 19 = 7980 가지 밖에 되지 않으므로 주어진 시간보다 작으므로 완전탐색이 가능하다.

숫자를 증가시킬 변수(t1, t2, t3)와 년 수를 카운트할 변수를 설정하고 루프를 한 번 돌 때마다 +1을 해준다. 카운트 해주기 전에 t1, t2, t3이 각각의 범위를 넘어갈 때마다 변수를 1로 초기화하고 입력받은 e, s, m의 숫자와 같아질 경우 루프를 빠져나온다.

전체코드

import sys
sys.setrecursionlimit(10000)

# 입력
e, s, m = map(int, sys.stdin.readline().split())

# 카운트할 임의의 변수
t1 = t2 = t3 = cnt = 0

while(True):
    # 각각의 범위를 넘어갈 때 1로 초기화
    if t1 == 16:
        t1 = 1
    if t2 == 29:
        t2 = 1
    if t3 == 20:
        t3 = 1

    # e, s, m과 같은 수가 되면 루프 종료
    if t1 == e and t2 == s and t3 == m:
        break

    # 카운트
    t1 += 1
    t2 += 1
    t3 += 1
    cnt += 1

# 출력
print(cnt)
반응형
Comments