본문 바로가기

코딩/백준

[백준][Bronze IV] 알파벳 개수 - 10808번 파이썬 문제풀이

728x90
반응형

 

문제 링크

성능 요약

메모리: 31120 KB, 시간: 36 ms

분류

구현, 문자열

 

문제 설명

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

입력

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

출력

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

 

예제 입력 1 복사

baekjoon

예제 출력 1 복사

1 1 0 0 1 0 0 0 0 1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0
 

 

<풀이>

#10828

a = list(input())
#print(a)

b = [0]*26
c = ord('a')

for i in a:
    b[ord(i)-c] += 1    
print(' '.join(map(str,b)))

0이 알파벳 개수만큼 있는 b리스트를 생성한다.

 

a에서 받은 문자열에서 각 알파벳의 아스키코드에 알파벳의 시작인 'a'의 아스키코드를 뺀 값을 찾아 이것을 b의 인덱스로 집어넣고, 1씩 그 값을 증가시킨다.

 

b의 값은 [1, 1, 0, 0 ......] 이런 식으로 이루어져 있기 때문에 ' , '를 빼주려고 join이라는 함수를 이용했고, 이 함수는 문자열만 합치기 때문에 b를 map 함수를 통해 전체적으로 문자열로 바꿔준다. 

반응형