[백준] 1475번 - 방 번호

yerimstar·2021년 7월 2일
0

구현

목록 보기
4/9

1차

아이디어

1) 6과 9는 호환이 가능하다고 했으므로 입력받은 값에서 6을 9로 치환해준다 + list변환
-> replace 함수 사용
2) list에 있는 값들을 count한 값을 새로운 배열에 넣어준다. 이때, 9는 6과 호환해서 사용이 가능하기 때문에 카드 세트는 count된 값 / 2한 만큼만 필요하다.
3) count된 값들 중 가장 큰 값이 카드 세트의 최솟값이 된다.

코드

nums = input()
nums = list(nums.replace('6','9')) # 모든 6을 9로 치환 + str에서 list로 변환
count = [nums.count(n) if n != '9' else round(nums.count(n)/2) for n in nums]
print(max(count))

69696입력시 3이 나와야 하는데 2가 나옴
-> 9가 있을 때 출력되는 값에 문제가 있는 듯...round(nums.count(n)/2) 수정 필요

최종

아이디어

파이썬 반올림
파이썬 내장함수인 round는 소숫점 앞자리의 숫자가 짝수면 내림, 홀수면 올림을 하는 방식
=> 따라서, round(4.5) = 4가 나온다 (일반적으로 알고 있는 반올림과 다름)
해결법
=> 강제로 0.5를 무조건 더해준뒤, 내림하는 방식 (math.floor함수 사용)

코드

import math
nums = input()
nums = list(nums.replace('6','9')) # 모든 6을 9로 치환 + str에서 list로 변환
count = [nums.count(n) if n != '9' else math.floor(nums.count(n)/2+0.5) for n in nums]
print(max(count))
profile
백엔드 개발자

0개의 댓글

관련 채용 정보