본문 바로가기
알고리즘/백준 - 파이썬

백준) 1157번 단어 공부 (파이썬)

by AI Sonny 2022. 6. 3.
728x90

문제) 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지

 

         알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

a = input().upper()

alist = list(set(a)) # set 함수는 중복을 허용하지 않고, {}로 묶는다.
cnt = []  # 각 알파벳별로 몇 번 나왔는지 센 값을 저장한 리스트

for i in alist:
    count = a.count
    cnt.append(count(i))
if cnt.count(max(cnt)) > 1:  # cnt 리스트에서 최댓값을 가지는 원소의 개수
    print('?')
else:
    print(alist[(cnt.index(max(cnt)))])

이번 문제는 가장 많이 사용된 알파벳을 대문자로 출력하고, 만약 가장 많이 사용된 알파벳이 여러개인

 

경우 '?' 로 출력하는 문제이다. 처음에 a를 선언하고. upper함수를 통해 대문자로 변환한다.

 

그 후 alist를 선언하여 list를 만들어준다. 그리고 set을 사용하여 문장의 중복을 없애준다.

 

set 함수의 특징은 중복을 없앤다는 특징이 있다.

 

for문을 통해 alist만큼 반복하고, count = a.count와 cnt.append(count(i))를 통해 count 숫자를 리스트에 append 시킨다.

 

그리고 cnt.count(max(cnt)) > 1이 충족한다면, 두 개 이상의 알파벳이 똑같은 횟수로 제일 많이 나왔음을 의미한다.

 

그래서 이런 경우는 '?' 를 출력하고, 아닌 경우는 가장 많이 나온 값을 출력하게 된다.

 

이번 문제는 한번 더 봐야겠다는 생각이 든다. 많이 어렵다......

 

이해가 안되시거나 틀린 정보는 댓글로 알려주시면 감사하겠습니다!

728x90

댓글