python 단어 공부

chanloper·2024년 7월 12일
0

자료구조

목록 보기
3/10

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

입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

예제 입력 1
Mississipi
예제 출력 1
?

예제 입력 2
zZa
예제 출력 2
Z

word = input().upper()
# upper 메서드를 사용하여 문자를 대문자로 변환하여 word 변수에 저장
word_list = list(set(word))
# set 함수를 사용하여 중복된 문자값 제거 후, word_list 변수에 저장
cnt = []
for i in word_list:
# for문으로 word_list 안에 들어있는 문자들을 반복
    count = word.count
# count 변수를 새로 만들어 중복 제외되기 전 word에 해당 문자가 몇 개 있었는지 센다. 
    cnt.append(count(i))
    # 해당 개수를 cnt[] 에 append, 추가해준다.

if cnt.count(max(cnt)) > 1 :
# if문을 사용하여 가장 많이 사용된 알파벳이 1보다 크다면 물음표 출력
    print("?")
else:
# 하나라면(1이하라면) 리스트 중에서 가장 큰 수의 위치를 index로 찾아 인덱스에 위치한
                                                        # 문자열을 출력
    print(word_list[(cnt.index(max(cnt)))])

set 자료형의 특징

  • 중복을 허용하지 않는다.
  • 순서가 없다.
    set 자료형에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환한후 해야 한다.

리스트에 포함된 요소 x의 개수 세기(count)
count(x)는 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수이다.

위치 반환 (index)
index(x) 함수는 리스트에 x 값이 있으면 x의 위치 값을 돌려준다.

max
max

변수 word에 upper()를 이용하여 입력 받은 문자열을 대문자로 변환하여 저장한다.
set()을 이용해서 변수 word 자료형의 중복을 제거한 뒤 list()로 묶은 뒤 변수 word_list에 저장

가장 많이 사용된 알파벳을 알기 위해서 변수 cnt를 [] 로 초기화

word_list 안에 들어있는 각각의 문자들을 for문으로 반복
count 변수를 새로 만들어 중복 제외되기 전 word에 해당 문자가 몇개 있었는지 횟수를 세고 cnt[] 에 append 해준다.

그 뒤 if 문을 사용하여 cnt 변수 리스트에 가장 큰 값 max(cnt)이 1 보다 크다면 ? 를 출력

그게 아니라면 위치를 cnt 변수 리스트에 가장 큰 값 max(cnt)을 index로 찾아 해당 인덱스에 위치한 문자열을 출력

set , count, index 함수들을 다시 상기시켜주는 문제였다.

profile
이것 뭐에요?

0개의 댓글