파이썬(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의 값을 대문자로 출력한다.
다른사람들
반응형