try 3 times / 난이도 : ★★★☆☆ (난이도는 제가 느끼는 매우 주관적인 난이도입니다.)
문제 확인
코드 깃허브 확인
정답 해설
lst = [0 0 ... 0] 0이 26개 있는 list의 각 원소들을 update해주는 형태
예) n이 'baekjoon'인 경우,
첫번째 for문에서 i는 'b'가 되어 lst[ord('b')-97] = lst[1]가 제대로 update된다.
n = input()
lst = [0]*26 #알파벳 a~z 총 26개. [0]을 총 26개로 초기화
#lst = [0 for _ in range(26)]
for i in n:
lst[ord(i)-97] += 1
#lst[ord(i)-ord('a)] += 1
for i in lst:
print(i, end=' ')
공부한 내용
1. 아스키코드
ord(문자) = 숫자 ; 문자를 숫자로 바꿔주는 함수
ord('a') = 97 이기 때문에
ord('a')-97로 0으로 만들어서 lst와 index를 맞춰준다.
2. 다른 풀이 이해하기
아스키 코드를 활용하지 않은 경우 & count 활용한 경우
알파벳을 리스트로 나열한다.
n = list(str(input())
lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
for i in range(len(lst)):
y = x.count(lst[i])
print(y, end=' ')
count 활용한 경우
해당 문자가 있을 때 한 개씩 더하지않고, n 문자열에서 i번째 값을 모두 count한다.
n = input()
lst = [0]*26
for i in range(n):
lst[ord(i)-97] = n.count(i)
for i in lst:
print(i, end=" ")
레퍼런스
- 아스키코드 설명
'Algorithm > 구현' 카테고리의 다른 글
[Python3] 백준 1110번 더하기 사이클 (0) | 2022.12.28 |
---|---|
[Python3] 백준 1032번 명령 프롬프트 (0) | 2022.12.28 |
[Python3] 백준 8958번 OX퀴즈 (0) | 2022.01.27 |
[Python3] 백준 2609번 최대공약수와 최소공배수 (0) | 2022.01.02 |
[Python3] 백준 2309번 일곱 난쟁이 (0) | 2022.01.02 |
댓글