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의 출현 횟수를 비교하여 더 작은 횟수를 기준으로 증가시키는 방식을 사용했습니다. 이렇게 문제를 풀이하면서, 문제를 정확히 이해하고, 적절한 접근 방식을 세우는 것이 중요함을 다시 한 번 깨닫게 되었습니다.
'BOJ' 카테고리의 다른 글
백준 10810번 - 공 넣기 [Python] (0) | 2023.07.27 |
---|---|
백준 10989번 - 수 정렬하기 3 [python] (0) | 2023.06.21 |
백준 1966번 - 프린터 큐 [Python] (0) | 2023.06.07 |
백준 11659번 - 구간 합 구하기 4 [python] (0) | 2023.04.03 |
백준 17608번 - 막대기 [python] (0) | 2023.03.18 |