본문 바로가기
코딩공부/백준 (python)

[백준 1157] 단어 공부 (Python)

by CodingKwon 2022. 3. 14.

문제 링크

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

나의 코드 (Python)

s = input().upper() # 대문자로 입력 받음
arr = list(set(s))  # 문자열의 중복 제거 값 배열
res = []    # 어떤 문자가 많이 쓰였는지 카운팅할 배열

for i in arr:
    res.append(s.count(i))  # 문자가 몇개씩 있는지 카운팅

if res.count(max(res)) > 1:     # 가장 많은 문자의 수가 여러 개인 경우 (중복)
    print("?")
else:
    print(arr[res.index(max(res))])     # res에서 가장 많은 문자 수를 가진 인덱스를 arr에서 찾아 출력

 

1. 대소문자를 구별하지 않고 대문자로 결과를 출력하기 때문에 upper()를 사용하여 입력을 받습니다.

2. 문자열의 구성요소를 파악하기 위해 list(set())을 사용하여 중복을 제거합니다

3. 어떠한 문자가 많이 쓰였는지 파악할 배열을 만듭니다. // arr과 res는 같은 인덱스를 가지게 될 겁니다.

4. 각 구성 문자가 몇 개씩인지 파악하여 res에 담습니다.

5. 카운팅 한 배열에 개수를 파악하여 가장 많은 문자의 수가 여러 개인 경우 "?"을 출력합니다.

6. 여러 개가 아닌 경우 res에 가장 많은 문자 수를 가진 인덱스로 arr 배열에서 찾아 출력합니다.

 

댓글