파이썬

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

ho코딩 2024. 3. 6. 00:35

 

알파벳 대소문자로 된 단어가 주어지면, 가장 많이 사용된 알파벳을 알아내는 프로그램을 만든다. 

이때 , "대소문자 구분 x" 

 

 

예를 들어 "Happy"를 입력했을 때 가장 많이 사용된 알파벳인 p의 대문자 P가 출력되어야한다. 

 

string = input().upper() 
string_list = list(set(string)) 
alphabet = []

for i in string_list:
    count = string.count(i)
    alphabet.append(count)

if alphabet.count(max(alphabet)) >1 :
    print("?")

else :
    print(string_list[(alphabet.index(max(alphabet)))])

 

1.

먼저 문자열 입력을 받고 모두 대문자로 바꿔버린다 . 

string = input().upper()

 

2.

그 다음 중복인 문자를 제거해준다. 이때 set() 개념이 사용되는 set는 순서가 없고 중복된 요소를 허용하지 않는 가변(mutable) 컬렉션 입니다. 하지만 set는 리스트와 다른 형태이므로 관리하기 편하게 list형태로 바꿔줍니다. 

 

3.

그리고, 각 알파벳이 몇번 사용되었는지 그 수를 기록한 alphabet 리스트를 생성합니다.

만약 HAPPY 문자열을 입력했다고 가정했을 때,

string = "HAPPY" / string_list = ["H","A","P","Y"] / alphabet=[ ] 인 상태일 것 입니다. 

 

4.

그리고 string_list에 관해서 string_list를 순회하며 각 요소가 string에서는 몇번 사용되었는지 count 변수에 담습니다.

ex) 이때 i의 값으로는 "H", "A","P","Y"가 들어올 수 있으며 , 첫 반복 회에서 i에는 "H"가 들어오고 string에 i가 몇번 들어있는지 count() 함수를 통해 센 다음에 그 횟수를 count에 기록해둡니다. (1번) 

 

그리고 그 횟수(1번)를 리스트에 기록합니다. 이 과정을 각 요소에 대해서 반복하면 alphabet = [1,1,2,1] 의 상태가 될 것 입니다. 

 

 5. 마지막으로 만약, alphabet의 max값이 1개를 초과한다면 물음표(?)를 출력합니다.만약 1개라면, 횟수가 최대값인 인덱스의 string_list값을 꺼내어 반환합니다. 

 

ex) string = "HAPPPY"string_list= ["H","A","P","Y"] alphabet=[1,1,3,1]max(alphabet) = 3 alphabet.index(max(alphabet)) = 2 (3의 index는 2) string_list[alphabet.index(max(alphabet))] = string_list[2] 즉, P가 출력된다.