안경잡이 구루루

백준 1157 ( 단어 공부 ) [ Python ] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 1157 ( 단어 공부 ) [ Python ]

구루루(gururu) 2020. 7. 4. 11:23
반응형

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


나:

word = input()        
ws = word.lower()      
a = sorted(set(ws))   

alpha= []
high = 0 
ouput = 0

for i in a:          
    if ws.count(i) >= high:
        high = ws.count(i)

        alpha.append(high)
        output = i 
    else:
        pass

if alpha.count(max(alpha)) >= 2:
    print('?')
else:
    print(output.upper())

완성된 코드는 위와 같다.

 

word = input()        
ws = word.lower()      
a = sorted(set(ws))   

alpha= []
high = 0 
ouput = 0

대소문자로 이루어진 알파벳을 word 변수에 입력받는다. 예제 입력2를 보면 알 수 있듯이 알파벳의 개수를 셀때는

대소문자 구별 없이 같은걸로 취급하기 때문에 구하기 편하게 ws 변수에 소문자로 변환시켜서 대입한다.

a 변수에는 set를 이용해 사용된 알파벳이 겹치지 않게 저장한다.

alpha에는 high 보다 이상인 값들이 들어가게 된다.  output은 출력하게될 알파벳을 나타낸다.

 

for i in a:          
    if ws.count(i) >= high:
        high = ws.count(i)

        alpha.append(high)
        output = i 
    else:
        pass

위 코드는 For 반복문을 이용해서 각 알파벳들의 개수를 구하는 과정이다.

set를 통해 겹치지 않게 알파벳이 저장된 변수 a의 각 요소를 i에 대입하고 이때 입력받은 문자열에서의 그 i의 개수를 high 값과 비교, 즉 알파벳중 가장 개수가 많은 것과 비교를 해서 output을 구한다.

이때 가장많이 사용된 알파벳이 2개 이상인 경우를 따져야 하기 때문에 alpha에 구한 high값들을 넣는다.

 

if alpha.count(max(alpha)) >= 2:
    print('?')
else:
    print(output.upper())

모든 high값들 중 가장 높은 값 max(alpha) 의 개수가 2개 이상인 경우는 가장많이 사용된 알파벳이 2개 이상이라는것을

의미하기 때문에 '?'를 출력한다. 이외의 경우에는 아까 구한 output의 값을 대문자로 출력한다.


다른사람들

https://leedakyeong.tistory.com/entry/%EB%B0%B1%EC%A4%80-python-1157%EB%B2%88-%EB%8B%A8%EC%96%B4%EA%B3%B5%EB%B6%80-%EC%84%A4%EB%AA%85

 

https://ksw626.tistory.com/52

반응형