문제

백준 10808 - 알파벳

 

새롭게 알게 된 점

배열을 출력하기 위해 for문만 생각했는데 map과 join 한수를 사용해 배열을 출력할 수 있다는 것을 알게 되었다.

접근 방법

두 가지 접근 방식을 생각하고, 어떤 것이 더 효율적인 연산일지 고려함.

 

1️⃣ 가정1. 알파벳을 기준으로 a~z까지 단어에 해당 알파벳이 몇 개 포함되어 있는지 갯수를 센다.

      예상1. 알파벳 갯수 26*단어 수 최대 100 = 26^100 연산이 필요함.

 

2️⃣ 가정2. 단어를 기준으로 해당 단어에 어떤 알파벳이 포함되어 있는지 찾고, 해당 알파벳의 적합한 인덱스 번호와 단어에 포함된 갯수를                    계산해서 배열을 만든다.

     로직: 단어의 처음부터 끝까지 순회하며 ord 함수를 통해 문자를 숫자로 변환해서 해당 인덱스 값을 +1 한다.

     예상2. 100*1*1 연산 필요. (ord 함수는 사전 정의된 매핑 테이블을 참조하는 정도이므로 상수 시간이 소요됨.)

inp = input()
alpabet = [0]*26

for i in range(0, len(inp)):
  inp_ascii_num = ord(inp[i])
  alpabet[inp_ascii_num - 97] += 1

print(' '.join(map(str, alpabet)))

'Algorithm' 카테고리의 다른 글

[BOJ] 3273 두 수의 합 - 파이썬  (0) 2024.08.21
[BOJ] 1475 방 번호 - 파이썬  (0) 2024.08.20
[BOJ] 2577 숫자의 개수 - 파이썬  (0) 2024.08.19
[바킹독] 배열  (0) 2024.08.17
[BOJ] 1629 곱셈 - 파이썬  (0) 2024.08.04

+ Recent posts