백준 10808 파이썬

Ddudduu·2023년 3월 1일
0

백준 10808

문제

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

출력

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

풀이1

딕셔너리를 사용한 방법

alphabetDict = {'a':0, 'b':0, 'c':0, 'd':0,'e':0,'f':0,'g':0, 'h':0,'i':0,'j':0,'k':0,'l':0,'m':0,'n':0,'o':0,'p':0,'q':0,'r':0,'s':0,'t':0,'u':0,'v':0,'w':0,'x':0,'y':0,'z':0,}
inputString = input()
for str in inputString:
  alphabetDict[str] += 1
print(*alphabetDict.values())

딕셔너리로 알파벳을 key, 개수를 value 로 선언하고 input 에 해당하는 알파벳의 value 를 증가시킨다.
*리스트 : 모든 리스트 값을 출력할 수 있다.
알파벳을 빼놓고 선언하는 실수가 있을 수 있다!

풀이2

아스키 코드를 활용하는 방법

inputString = input()
countArray = [0] * 26
for str in inputString:
  countArray[ord(str) - 97] += 1
print(*countArray)

ord() 는 문자를 아스키 코드로 변경한다.
ord('a') 는 97을 반환하기 때문에 모든 값에 97을 빼서 a 의 index 를 0 으로 맞춰준다.

풀이3

count() 를 활용하는 방법

inputString = input()
countArray = [0] * 26
for str in inputString:
  countArray[ord(str) - 97] = inputString.count(str)
print(*countArray)

해당 문자가 발견될 때마다 1씩 더해주는 것이 아니라, inputString 에서 해당 문자의 개수를 배열에 저장한다.

'aaa'.count('a)
list1 = [1,2,3,1,4,5,6]
list1.count(1)

다음과 같이 count() 는 리스트에서도 사용할 수 있다!

profile
Android

0개의 댓글