[백준 1157] 단어공부

1763 단어 백준Python3Python3

1157번

문제

풀이

#20291번 풀었을 때 처럼 사전을 이용해서 풀었다.
생각보다 복잡하게 푼 것 같아서 다른 사람이 푼 코드를 참고했다.

소스코드

내가 푼 코드

w=input().lower()
L={}
for i in range(len(w)):
  if w[i] in L :
    L[w[i]]=L[w[i]]+1
  else : 
    L[w[i]]=1

L_list = list(L) #가장 첫 값을 max로 설정하기 위해 key값으로만 이루어진 리스트 생성
max = L[L_list[0]]
max_word=L_list[0]
cnt=0 #cnt 초기화

for i in range(len(L)): #가장 많이 등장하는 단어 탐색
  if L[L_list[i]] > max :
    max= L[L_list[i]]
    max_word=L_list[i]
    cnt=1

for i in range(len(L)): #?가 나오는 상황 찾기 위해
  if L[L_list[i]]==max :
    if L_list[i] != max_word :
      cnt=2

if cnt == 2: print('?')
else : print(max_word.upper())

scvhero님 코드

from statistics import*
try:t=mode(input().upper())
except:t='?'
print(t)

모듈을 import 해왔다.
statistics 모듈에서 mode는 최빈값을 구하게 해준다.

BlockDMask님 코드

words = input().lower()
words_list = list(set(words))
word_count = list()

for i in words_list:
    count = words.count(i)
    word_count.append(count)

if(word_count.count(max(word_count)) >= 2):
    print('?')
else:
    print(words_list[(word_count.index(max(word_count)))].upper())
  1. 집합 set을 이용하면 중복값을 제거 가능하다.
  2. count(i)하면 i의 갯수가 몇개인지 세준다. --> for문으로 갯수 세지 않아도 됨.
  3. 리스트.index(a)하면 리스트에서 원소 값이 a인 첫 번째 원소의 index를 반환한다.

좋은 웹페이지 즐겨찾기