본문 바로가기
알고리즘

백준_1475_방 번호(파이썬, Python)

by 매화of사군자 2020. 7. 14.

https://www.acmicpc.net/problem/1475

 

1475번: 방 번호

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

www.acmicpc.net

문제를 보고 들었던 처음 생각

- number_list = [0 ~ 9]를 만들어 input으로 들어오는 값을 한 자리 한 자리 비교하면서 풀어야겠다.

- 문제점 : 1119696 같은 입력이 들어오면 111에서 count 3, 9696에서 count 2를 하여 5가 나왔다. 원래 정답은 4.

 

문제점을 알고 난 후의 생각

- Python에는 Counter라는 모듈이 있다. 쉽게 말하면 모든 요소들을 count 해주는 것.

- 6과 9는 같은거라고 볼 수 있으므로 input 값에서 6을 모두 9로 바꾸어준다.

- Counter를 사용한다.

- 만일 결과에 9가 count 되었으면 그 값은 2로 나눈다.(올림, 9라는 값은 6으로도 사용할 수 있으므로)

- count 값 중 최대값을 출력한다.

 

코드

더보기

from collections import Counter
import math

matter = input()
matter = matter.replace('6', '9')
number_count = Counter(matter)

result = number_count.most_common(2)
if len(result) == 1:
if result[0][0] == '9':
tmp = result[0][1]
tmp = math.ceil(tmp / 2)
print(tmp)
else:
print(result[0][1])
else:
if result[0][0] == '9':
tmp = result[0][1]
tmp = math.ceil(tmp / 2)
if tmp >= result[1][1]:
print(tmp)
else:
print(result[1][1])
else:
print(result[0][1])

'알고리즘' 카테고리의 다른 글

백준 2799 블라인드 파이썬  (0) 2020.08.07
백준_2941_크로아티아 알파벳  (0) 2020.07.08
백준_2188_축사 배정  (0) 2020.03.25
백준_2166_다각형의 면적(python)  (0) 2020.03.24
백준_11758_CCW(CCW, 기학와 벡터)  (0) 2020.03.01

댓글