김두두의 블로그

[파이썬] 백준 1157번 단어 공부 본문

it

[파이썬] 백준 1157번 단어 공부

두두100 2022. 3. 15. 22:55

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

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

 

처음 구상으로는

a=input()으로 받고 a.upper()해줘서 모두 대문자로 바꾼 다음에 list(a)로 다 알파벳을 쪼개서 if~elif~else문 26개 작성해서(알파벳 별로) 알파벳 수를 세기로 함

 

그러나 그건 그냥 노가다 세는 것과 다를 바가 없으므로 구글링을 하기로 했다.

필요했던 정보

 

1. 모든 결괏값들은 대문자이고, 대소문자 구분을 하지않고 개수를 세어야 한다.

->string.upper() 사용. 이 때 list.upper()은 불가하므로 string일 때 해줘야 한다.

 

2. 알파벳 몇 개인지 세기

https://lvolz.tistory.com/12

 

[Python] txt 파일 내의 모든 알파벳 개수 세기

파이썬으로 텍스트 파일 내의 모든 알파벳의 개수를 세는 프로그램을 작성했다. (알파벳 개수 세기, 알파벳 빈도수 구하기) article.txt 파일을 pt로, article_cipher.txt 파일을 ct로 이름을 붙여 불러왔

lvolz.tistory.com

상단의 블로그를 참고하였습니다.

 

3. 맥시멈이 두 개 이상일 때 리스트에서 감지하기(원래는 맨 첫번째 것만 나옴)

https://ai-hyu.com/python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%9D%B8%EB%8D%B1%EC%8A%A4-%EC%97%AC%EB%9F%AC%EA%B0%9C-%EC%B0%BE%EA%B8%B0/

 

[Python] 파이썬 리스트 인덱스 여러개 찾기

파이썬 리스트 인덱스 여러개 찾기리스트에서 특정 단어 및 숫자의 인덱스를 여러개 찾고자 할 때 쓸수 있는 방법이다. 예를 들어 [1,3,3,1,1] 이와 같은 리스트가 있을 때, 3의 인덱스를 모두 반환

ai-hyu.com

상단의 블로그를 참고하였습니다.

 

4. 맥시멈일 때 그 인덱스 출력

https://jangjy.tistory.com/332

 

list 에서 최대값과 최대값의 index를 찾아보자

list에서 최대값과 최대값의 index를 찾는 방법을 정리. 리스트 내에서 최대값을 찾는 방법은 max를 이용한다 $ nList = [3, 5, 1, 2, 7, 8, 5] $ max(nList) > 8 리스트 내에서 최대값의 index를 찾는 방법은 lis..

jangjy.tistory.com

상단의 블로그를 참고하였습니다.

 

열심히 섞어서~~

a=input()
a=a.upper() #모두 대문자 변환

pt_freq=[0]*26
Alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for ch in a:
    if ch in Alphabet:
        idx = Alphabet.find(ch)
        pt_freq[idx] += 1
'''for i in range(0,26):
    print(Alphabet[i],':',pt_freq[i])'''
res_list = [i for i, value in enumerate(pt_freq) if value == max(pt_freq)]

if len(res_list)>1:
    print('?')
else:
    index=pt_freq.index(max(pt_freq))
    print(Alphabet[index])

 

완성! 주말에 다시 풀어봐야겠다.