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 함수를 통해 전체적으로 문자열로 바꿔준다.
반응형
'코딩 > 백준' 카테고리의 다른 글
[백준][Bronze III] 별 찍기 - 4 - 2441번 파이썬 문제풀이 (0) | 2024.10.28 |
---|---|
[백준][Bronze IV] 별 찍기 - 3 - 2440번 파이썬 문제풀이 (0) | 2024.10.26 |
[백준] [Silver III] 두 수의 합 - 3273번 파이썬 문제풀이 (0) | 2024.10.20 |
[백준][Silver IV] 수 찾기 - 1920번 파이썬 문제 풀이 (0) | 2024.10.18 |
[백준] [Bronze III] 핸드폰 요금 - 1267번 문제풀이 (2) | 2024.10.16 |