백준 1475 - 방 번호 (Python3)
코드
import math
# Counter 사용
from collections import Counter
n = int(input())
# 입력받은 문자에 존재하는 숫자들의 개수를 담음
a = Counter(str(n))
# 숫자 개수를 저장할 리스트
cnt = [0] * 10
for i in range(10):
# Counter에 None이 아닌경우에만
if a.get(str(i)) != None:
# 만약 9라면 6에 개수를 합쳐서 더함
if int(i) == 9:
cnt[6] += a.get(str(i))
# 아닌 경우 자기 자리에 더함
else:
cnt[i] += a.get(str(i))
# 6에 9도 더했으므로 반으로 나누어줌
# 이 때, 더한 값이 홀수라면 나눈 값을 올림으로 처리
# 6, 6, 9 인 경우 총 개수는 3이지만 결국 6이 2개 필요하므로
cnt[6] = math.ceil(cnt[6] / 2)
# cnt의 최댓값이 정답
print(max(cnt))
문제 해설
구현 문제.
입력받은 숫자를 문자열로 바꾼 후, Counter 라이브러리를 활용하여 숫자들의 개수를 집계해주면 간단하게 해결할 수 있다.
개인적으로 구현 문제가 어렵게 나오면 정말 막막한 것 같다. 많은 문제를 풀어봐서 다양한 코드를 접해봐야겠다.
댓글남기기