본문 바로가기

코딩 테스트/백준 파이썬 문제 풀이

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

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

 

이번 문제는 입력 받은 문자열 속에서

반복적으로 사용된 알파벳 중 가장 많이 사용된 문자를 대문자로 출력하면 된다

만약 한 문자열 안에서 가장 많이 사용된 문자가 여러개라면 ?를 출력해야 한다

 

word = input().upper()
origin_word = list(set(word))
count_list = []
for i in origin_word:
    count = word.count(i)
    count_list.append(count)
if count_list.count(max(count_list)) > 1:
    print('?')
else:
    max_index = count_list.index(max(count_list))
    print(origin_word[max_index])

 

우선, upper 함수를 이용해서 입력값의 문자열을 전부 대문자로 변경해 저장한다.

여기에서 origin_word에 set 함수를 이용해 반복적으로 사용된 것들을 전부 지우고

입력받은 문자열 속 모든 문자들이 단 한번씩만 들어가 있도록 변경해준다

그리고 for 문에서 origin_word 속에 있는 각 문자를 i에 집어넣어

실제 입력받은 word 문자열에 해당 문자가 몇 개 들어가 있는지 count 해준다

만약 이 카운트 속 max 값이 여러 개가 존재한다면 이는 ?를 출력해야 하는 조건을 만족한다

그렇지 않다면 max 값을 가지는 문자가 origin_word에서 몇 번째에 있었는지 index 함수로 받아내

해당하는 문자를 출력해주면 정답이 된다