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 |
댓글