[백준/Python] 1475 - 방 번호

고운·2023년 11월 23일

알고리즘

목록 보기
2/94

문제

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

입력

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

출력

첫째 줄에 필요한 세트의 개수를 출력한다.


풀이
dictionary를 사용하는 간단한 문제였다
N이 1,000,000 이하이기 때문에 O(n2)O(n^2)의 시간복잡도를 갖는 방식을 사용하면 시간 초과가 발생할 것이다
6과 9를 제외하면 재사용할 수 있는 숫자가 없기 때문에 0-8까지의 문자를 dict에 집어넣고 0으로 value들을 초기화해줬다
입력 받은 문자열 N의 문자 하나하나 체크해서 dict에서 카운트를 증가해줬고 9에 해당하는 경우 6의 카운트를 +1 해주었다
그리고 6에 해당하는 카운트 개수를 2로 나눈 값을 올림처리 했다
N이 9999 같이 2로 나누어 떨어진다면 문제가 되지 않겠지만 999, 99999와 같은 경우에는 1.5, 2.5의 값이 발생하므로 3개의 세트가 필요하기 때문
그리고 나서 dict의 value들 중 max값을 출력했다

코드

import sys, math

n = sys.stdin.readline().strip()

d = {}
for elem in "012345678":
    d[elem] = 0

for elem in n:
    if elem == "9":
        d["6"] += 1
    else:
        d[elem] += 1

d["6"] = math.ceil(d["6"]/2)
print(max(d.values()))
profile
무럭무럭 성장하는 개린이 공부 공간

0개의 댓글