본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 2][Python] 16674번 : 2018년을 되돌아보며

by 빛밤하늘 2021. 7. 2.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

16674번: 2018년을 되돌아보며

조그만 수학적 연관성에도 깊은 흥미를 두는 상헌이는 우연히 고려대학교 프로그래밍 경시대회가 열리는 날짜를 년도와 월일을 붙여 쓰면 20181208임을 알게 되었다. 2018년이 한 달도 남지 않음을

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 첫 번째 줄에 양의 정수 N을 입력합니다.
# 1 <= N <= 1,000,000,000
# 맨 끝의 \n은 떼어줍니다.
N = stdin.readline().rstrip()
# N의 길이를 저장하는 변수를 선언합니다.
N_len = len(N)

# N에서 2의 개수를 저장하는 변수를 선언합니다.
two_cnt = N.count('2')
# N에서 0의 개수를 저장하는 변수를 선언합니다.
zero_cnt = N.count('0')
# N에서 1의 개수를 저장하는 변수를 선언합니다.
one_cnt = N.count('1')
# N에서 8의 개수를 저장하는 변수를 선언합니다.
eight_cnt = N.count('8')

# N이 2, 0, 1, 8로만 이루어져 있다면
# 즉, N의 길이와 2, 0, 1, 8의 개수의 합이 같은 경우
if two_cnt + zero_cnt + one_cnt + eight_cnt == N_len:
    # 일단 N은 관련 있는 수에 속합니다.
    # 관련 있는 수 중에서 2, 0, 1, 8을 모두 포함하는 경우
    # 즉 2, 0, 1, 8의 개수가 각각 1개 이상인 경우
    if two_cnt >= 1 and zero_cnt >= 1 and one_cnt >= 1 and eight_cnt >= 1:
        # 일단 N은 밀접한 수에 속합니다.
        # 밀접한 수 중 2, 0, 1, 8의 개수가 모두 똑같은 경우
        if two_cnt == zero_cnt and zero_cnt == one_cnt and one_cnt == eight_cnt:
            # N은 묶여있는 수이므로 8을 출력합니다.
            print(8)
        # 묶여있는 수까지는 안되는 경우
        else:
            # 밀접한 수이므로 2를 출력합니다.
            print(2)
    # 밀접한 수까지는 안되는 경우
    else:
        # 관련 있는 수이므로 1을 출력합니다.
        print(1)
# 관련없는 수도 아니라면
else:
    # 관련 없는 수이므로 0을 출력합니다.
    print(0)

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글