Love Every Moment

〔백준/파이썬〕1157번 단어 공부 본문

PROGRAMMING::LANGUAGE/Python

〔백준/파이썬〕1157번 단어 공부

해 송 2022. 6. 25. 12:11
반응형

 

출처

 

1157번: 단어 공부

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

www.acmicpc.net

 


 

문제

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

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

 


 

예제

# 입력
Mississipi
zZa
z
baaa
# 출력
?
Z
Z
A

 


 

풀이 - (1)

# 입력 받은 문자열을 모두 대문자화 + 리스트화
string = list(input().upper())

# 문자와 등장 횟수를 key-value 쌍으로 저장할 딕셔너리 생성
di = dict()
for i in string :
	di[i] = di.get(i, 0) + 1

# value-key 쌍으로 바꾸어 저장할 리스트 생성
count = list()
for key, value in di.items() :
	new_tuple = (value, key)
	count.append(new_tuple)

# 리스트를 내림차순으로 정렬
count = sorted(count, reverse=True)

# 가장 많이 등장한 문자가 여러 개이면 물음표 출력, 하나라면 해당 문자 출력
if len(count) == 1 :
	print(count[0][1]) 
elif count[0][0] == count[1][0] :
	print('?')
else :
	print(count[0][1])
  • 딕셔너리와 리스트의 기본 기능만 이용한 풀이 방법
  • 빈 딕셔너리를 생성하여 리스트 내의 문자 등장 횟수(=value)를 get() 으로 구하여 저장한다
  • 가장 등장 횟수(=value)가 많은 순서대로 정렬해야 하기 때문에 key-value 쌍을 뒤집어 새로운 리스트를 만든다
  • 리스트의 첫 번째와 두 번째 요소의 횟수가 같으면 물음표를 출력하고 아니면 문자를 출력

 

풀이 - (2)

# import collections 해서 collections.Counter() 처럼 써도 됨
from collections import Counter

# 입력 받은 문자열을 모두 대문자화 + 리스트화
string = list(input().upper())

# 리스트를 딕셔너리화(문자-문자개수 튜플)
c = Counter(string)

# 가장 많이 등장한 문자 리스트(2개 이상이면 물음표 출력)
c_max = list()
for letter, count in c.items() :
	if count == max(c.values()) :
		c_max.append(letter)
if len(c_max) > 1 :
	print('?')
else :
	print(c_max[0])
  •  collections 모듈의 Counter 클래스를 이용하는 방법이다
  • Counter()는 주어진 리스트를 카운터 딕셔너리로 바꾸어 반환해준다
  • 딕셔너리.items(), 딕셔너리.values() 는 각각 (key-value) 쌍들의 리스트와 value 들의 리스트를 반환한다

이전에 작성한 글 참고

 

〔모두를 위한 파이썬〕딕셔너리, 데이터 빈도수 측정하기

1. 딕셔너리 순서가 없는 가방과 같은 개념 물건에 라벨을 붙여놓으면 다음에 그 물건을 찾기가 쉽다! (key - value) purse = dict() 로 빈 딕셔너리를 생성 purse['money'] = 12 와 같이 사용 2. 리스트와 딕셔.

love-every-moment.tistory.com

  • 딕셔너리의 값(=문자 등장 횟수) 중 최대값을 가지는 키(=문자)를 출력한다
  • 이때 c_max 의 요소가 2개 이상이면 물음표를 출력한다

 


 

노트

  • collections 모듈에 Counter() 이외에도 유용한 모듈이 많으니 따로 공부해두자
 

2.5 collections 모듈

`collections` 모듈에는 데이터 처리를 위한 유용한 객체가 많이 있다. 그중 몇 가지를 간략히 소개한다. ### 예: 카운트하기 보유한 주식이 다음과 같을 때, ...

wikidocs.net

 

반응형
Comments