programmingu

[코딩연습/문자열][백준]단어 공부 본문

카테고리 없음

[코딩연습/문자열][백준]단어 공부

예진잉구 2021. 1. 6. 00:21

'백준'에서 문제를 풀었다.

자세한 문제는 아래 링크 참조

www.acmicpc.net/problem/1157

 

1157번: 단어 공부

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

www.acmicpc.net

주어진 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아보는 프로그램을 만든다. 가장 많이 사용된 알파벳이 하나가 아니면 ?를 출력한다.

 

문제에서 대문자와 소문자의 구분 없이 개수를 세라고 제시했다. 그래서 입력 문자열을 출력 형식인 대문자로 모두 바꿔주고 시작했다.

 

sorted를 이용해 문자열을 정렬한다. 이때 s.sort()를 사용해도 된다.

(그러면 원본 문자열이 바뀐다. sorted는 형식이 list로 반환되는데 s.sort는 그렇지 않아서 상황에 따라 사용하면 좋을 것 같다.)

 

나머지는 아래 코드를 참조하면 된다. 부족한 설명은 시간이 있을 때 추가하겠다.

s = input().upper() # 모두 대문자로 바꾼다
s_sorted = sorted(s)

count_max = 0 # 현재까지 가장 많은 알파벳이 몇번 나왔는지
many = 0 # 가장 많은 알파벳의 개수
i = 0

while i < len(s_sorted):
    count = s_sorted.count(s_sorted[i])

    if count > count_max:
        count_max = count
        many = 1
        Alphabet=s_sorted[i]

    elif count == count_max:
        many += 1

    i = i + count

if many > 1:
    print('?')

else:
    print(Alphabet)