BOJ

백준 1475번 - 방 번호 [python]

SS_G 2023. 6. 13. 23:35
반응형

https://www.acmicpc.net/problem/1475

 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

안녕하세요,  오늘은 백준 1475번 '방 번호' 문제에 대한 Python 풀이를 공유하려 합니다. 이 문제는 주어진 방 번호를 만들기 위해 필요한 숫자 세트의 최소 개수를 구하는 문제로, 6과 9는 서로 뒤집어서 사용할 수 있다는 특징이 있습니다.

 

문제 이해

이 문제는 주어진 방 번호를 만들기 위해 필요한 숫자 세트의 최소 개수를 구하는 문제입니다. 숫자 세트는 0부터 9까지의 숫자가 하나씩 들어있고, 6과 9는 서로 뒤집어서 사용할 수 있다는 특징이 있습니다.

 

문제 접근 방식

이 문제를 풀기 위한 가장 중요한 접근 방식은, 주어진 숫자에서 가장 많이 나오는 숫자가 몇 번인지 파악하는 것입니다. 왜냐하면 그 숫자를 충족시키기 위해서는 최소 그만큼의 세트가 필요하기 때문입니다. 특히, 6과 9는 뒤집어서 사용할 수 있으므로 두 숫자가 나오는 횟수 중 작은 횟수를 기준으로 처리해야 합니다.

 

코드 작성

num = input()
checked = [0]*10

for i in num:
    if i == '6' or i == '9':
        if checked[6] <= checked[9]:
            checked[6] += 1
        else:
            checked[9] += 1
    else:
        checked[int(i)] += 1

print(max(checked))

 

코드 해설

1. 입력 및 초기화: 우리는 먼저 입력받은 방 번호를 문자열로 처리하고, 각 숫자의 출현 횟수를 저장할 리스트 checked를 0으로 초기화합니다. checked는 인덱스 9가 각각 숫자 9의 출현 횟수를 의미하게 됩니다.

2. 숫자의 출현 횟수 계산: 방 번호의 각 숫자마다 그 숫자의 인덱스에 해당하는 checked의 값을 1씩 증가시킵니다. 특히, 6과 9는 뒤집어서 사용할 수 있으므로 두 숫자가 나오는 횟수 중 작은 횟수를 기준으로 증가시킵니다.

3. 결과 출력: checked의 가장 큰 값을 출력합니다. 이 값이 바로 필요한 세트의 최소 개수입니다.

 

마치며

이 문제는 뒤집을 수 있는 숫자를 어떻게 처리하느냐가 핵심이었으며, 이를 위해 현재 6과 9의 출현 횟수를 비교하여 더 작은 횟수를 기준으로 증가시키는 방식을 사용했습니다. 이렇게 문제를 풀이하면서, 문제를 정확히 이해하고, 적절한 접근 방식을 세우는 것이 중요함을 다시 한 번 깨닫게 되었습니다. 

반응형