[백준 | 파이썬] 1475 : 방 번호

devheyrin·2022년 3월 1일
0

codingtest

목록 보기
25/65
💡 반례 찾느라 꽤 애를 먹었다.

문제

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

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

입력

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

출력

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

풀이 방법

9와 6은 2개씩 묶어서 한 세트로 친다는 것만 유의하면 어렵지 않다.

처음에는 방 번호의 갯수를 하나씩 카운트하면서 방 번호가 9이거나 6인경우 2로 나눈 몫(홀수의 경우 +1) 을 갯수로 넣어주었는데, 6과 9가 함께 있는 입력에서는 문제가 발생했다.

9와 6은 둘 중 무엇이 들어오든 결국 9의갯수+6의갯수를 합한 것을 두개씩 묶어서 한 세트로 볼 수 있기 때문에, 방 번호에 포함된 6을 모두 9로 바꿔주고, 9인 경우 2로 나눈 몫을 넣어주는 것으로 수정했다.

n = input()
n = n.replace('6', '9')
array = []
for i in set(n):
    cnt = n.count(i)
    if i == '9':
        cnt = cnt // 2 + cnt % 2
    array.append((i, cnt))

max_num, max_cnt = max(array, key=lambda x: x[1])

print(max_cnt)
profile
개발자 헤이린

0개의 댓글