1157번 : 단어 공부 문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오.
단, 대문자와 소문자를 구분하지 않는다.
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
풀이 코드
word = input().upper()
remove_word = list(set(word))
c = []
for s in remove_word:
cnt = word.count(s)
c.append(cnt)
if c.count(max(c)) > 1 :
print('?')
else:
max_value = c.index(max(c))
print(remove_word[max_value])
word = input().upper()
- 첫째 줄에서 알파벳 대소문자로 이루어진 문자열을 입력받음
- input() 은 한 줄의 문자열만 입력받을 수 있음
- 대소문자를 구분하지 않으므로, upper() 함수를 이용하여 문자열을 대문자로 변환
- 대문자로 변환한 입력값을 word 변수에 저장
remove_word = list(set(word))
- set() 함수를 이용하여 word 문자열에서 중복되는 요소 제거
- 중복을 제거한 문자열을 list() 형으로 전환
- 리스트를 remove_word 변수에 저장
즉, remove_word 에는 입력받은 문자열에서, 중복 문자를 제거한 문자열이 저장되어 있음!
c = []
- 입력받은 문자열에 같은 알파벳이 몇 개 있는지를 저장할 리스트 c
- 빈 리스트로 초기화
for s in remove_word:
- 'for 변수 in 리스트' 형태로, in 뒤에 오는 데이터로는 리스트, 튜플, 문자열 사용
- 중복을 제거한 문자 리스트인 remove_word 의 각 문자를 하나씩 순회
cnt = word.count(s)
- 리스트변수명.count(특정값) 을 사용
- 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 수 있음
- 입력받은 문자열에서 각각의 문자가 몇 번 사용되었는지 cnt 변수에 저장
c.append(cnt)
- 리스트 변수명.append() 함수는, 리스트에 원소를 하나 삽입할 때 사용
- 각각 문자가 사용된 횟수인 cnt 를, c 리스트에 저장
if c.count(max(c)) > 1: print('?')
- max() 함수는 파라미터가 2개 이상 들어왔을 때, 가장 큰 값을 반환
- max(c) 로, 각 문자가 사용된 횟수 중 가장 큰 값을 반환
- 리스트변수명.count(특정값) 을 사용하여, 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 수 있음
- c.count(max(c)) 로, 사용된 횟수가 가장 큰 값이 1개 이상인 경우, ? 를 출력
else: max_value = c.index(max(c))
- 사용된 횟수가 가장 큰 값이 1개만 있는 경우
- index() 함수를 사용하여, 가장 많이 사용된 문자의 인덱스를 max_value 에 저장
print(remove_word[max_value])
- 가장 많이 사용된 알파벳의 인덱스인 max_value 값은 remove_word 에 넣음
- 입력받은 단어에서 가장 많이 사용된 알파벳을 대문자로 출력
나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.
https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC
'백준 알고리즘 문제 풀이 [Python]' 카테고리의 다른 글
| [백준/Python] 2908번 상수 (문자열) (0) | 2023.02.23 |
|---|---|
| [백준/Python] 1152번 단어의 개수 (문자열) (0) | 2023.02.23 |
| [백준/Python] 2675번 문자열 반복 (문자열) (0) | 2023.02.23 |
| [백준/Python] 10809번 알파벳 찾기 (문자열) (0) | 2023.02.23 |
| [백준/Python] 11720번 숫자의 합 (문자열) (0) | 2023.02.23 |