Front-end Developer
백준 알고리즘 1157 [파이썬] 본문
배운 내용
이 문제는 처음에 풀어서 답이 나왔는데 시간초과로 인해서 다시 세팅을 해야했다. 원하는 답만 나온다고해서 문제를 푼게 아니라 내가 짠 코드가 범위안에서 돌아가는데 효율적인지도 생각해봐야겠다.
set 내장 함수를 이용해서 input된 단어안에있는 공통되는 알파벳을 없애고 하나씩만 저장할 수 있다. 최빈값을 구할 때 사용하기 좋은 함수이다.
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
문제풀이
lst = []
# 알파벳이 대문자로 통일되어야되기 때문에 .upper()사용
word = input().upper()
# 공통되는 알파벳을 삭제하고 하나씩만 가지고있기 위해 set을 사용했다.
set_word = list(set(word))
# word안에 해당하는 알파벳이 몇개인지 확인하고 전 알파벳보다 많으면 lst에 저장
cnt = 0
for i in set_word:
cnt_1 = word.count(i)
if cnt_1 >= cnt:
if cnt_1 > cnt:
lst =[]
cnt = cnt_1
lst.append(i)
# 만약에 lst에 2개이상의 알파벳이 있으면 "?"입력
if len(lst) > 1:
print("?")
else:
print(lst[0])
'알고리즘' 카테고리의 다른 글
백준 알고리즘 11729 [파이썬] (0) | 2021.03.09 |
---|---|
백준 알고리즘 1929 [파이썬] (0) | 2021.03.09 |
백준 알고리즘 4344번 [파이썬] (2) | 2021.03.06 |
알고리즘 : 정렬(Sort), 탐색(Search) (0) | 2021.02.23 |
알고리즘 : 선형 배열(Linear Arrays) (0) | 2021.02.21 |
Comments