문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
문제 풀이
방 번호 문제의 핵심은
같은 번호의 최대 개수만큼 세트가 필요하다는 것입니다.
같은 번호는 한 세트 안에 하나만 존재하므로
같은 번호의 최대 개수만큼 세트가 필요합니다.
그런데 이때, 6은 9를 뒤집어서 이용할 수 있습니다.
따라서 6과 9의 개수를 세어줄 때는 둘 중 개수가 더 적은 것에
더해주는 형식으로 개수를 세어주어야 합니다.
왜냐하면 만약 6이 2개이고 9가 3개인 상황에서
66999 -> 6 한 개, 6은 9로 대체 가능하므로 9 한 개
9 한 개, 9는 6으로 대체 가능하므로 6 한 개
마지막 9 한 개
이렇게 총 3개가 필요합니다.
이 과정을 살펴보면
6이나 9를 만날 때마다 개수가 더 적은 것에 수를 더해준다는
사실을 알 수 있습니다.
따라서 각 숫자의 개수를 저장할 list를 별도로 만들어준 뒤
위의 방법대로 각 숫자의 개수를 세어주고
그 중 최대 값을 출력해주면 됩니다.
My Code
n = input() # 다솜이의 방 번호
array = [0] * 10 # 각 숫자의 개수를 셀 list
for i in n:
if i == '9' or i == '6': # 9 혹은 6이라면
if array[9] <= array[6]: # 9의 개수가 더 작다면
array[9] += 1 # 9의 개수를 count
else: # 6의 개수가 더 작다면
array[6] += 1 # 6의 개수를 count
else: # 9 혹은 6이 아니라면
array[int(i)] += 1 # 숫자의 개수를 세어줌
print(max(array)) # 개수 중 최대값을 출력
'백준(Python) 풀이' 카테고리의 다른 글
백준 1932번. 정수 삼각형 (Python / 파이썬) (0) | 2022.04.20 |
---|---|
백준 2108번. 통계학 (Python / 파이썬) (0) | 2022.04.19 |
백준 11866번. 요세푸스 문제 0 (Python / 파이썬) (0) | 2022.04.19 |
백준 1931번. 회의실 배정 (Python / 파이썬) (0) | 2022.04.19 |
백준 11650번. 좌표 정렬하기 (Python / 파이썬) (0) | 2022.04.19 |
댓글