-
[Python] BOJ 10808 : 알파벳 개수코딩테스트/백준 2024. 10. 9. 08:55
요구사항
- 시간 제한 1초 & 메모리 제한 256MB
- 알파벳의 개수가 26개이니, 하고 싶은 거 다 해
- 소문자로 이루어진 문자열의 각 알파벳이 몇 개인지 구하는 프로그램.
설계
- if문이나 case문으로 하나하나 작성하기 싫었다.
- 메모이제이션을 이용, 필요한 정보만 저장하면 된다.
- 사용자로부터 입력을 받는다. (word)
- 필요한 정보를 저장할 리스트를 0으로 초기화한다.
- 문자열은 리터럴이기 떄문에, for alpha in word:
- 리스트의 위치에 넣어준다. -> ord(alpha) & ord('a')
- 리스트[location] 에 1를 더해준다.
구현
word = input() dp = [0] * 26 # 알파벳의 개수 for alpha in word: location = ord(alpha) % ord('a') dp[location] += 1 print(*dp)
신기?했던 점
확실히 문제를 전보다 많이 접하고 나니 다른 풀이법도 보인다.
백준 문제 처음에는 로직을 어떻게 짤 지, 기본 문법도 몰랐다. 그 다음엔 생각할 수 있는 방법이 1개 정도였다. 그 1개의 방법이 최적화된 코드 또한 아니다. 현재는 최적화된 코드는 아니여도 코드 한줄 한줄 왜 썼는 지에 대한 이유와 여러 가지 방법 중에서 택할 수 있는 점이 좋다. 앞으로 더 많이 !!. 다시 쉬운 문제로 돌아오는 이유는 알고리즘 주차 동안 쳐내기 바빠 내가 어디서 막혔는 지 취약점을 알고 싶기 때문이다.
'코딩테스트 > 백준' 카테고리의 다른 글
[Python] BOJ 13300 : 방배정 (0) 2024.10.11 [ Python] BOJ 3273 : 두 수의 합 (0) 2024.10.10 [Python] BOJ 14888 : 연산자 끼워넣기 (1) 2024.10.07 [Python] BOJ 15486 : 퇴사2 (1) 2024.10.05 [Python] BOJ 1946 : 신입 사원 (0) 2024.10.02 - 시간 제한 1초 & 메모리 제한 256MB