Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Dinosaur
- Bull
- AWS
- MongoDB
- JavaScript
- game
- 정렬
- dfs
- mongoose
- jest
- class
- nestjs
- 자료구조
- Nest.js
- typeORM
- flask
- OCR
- MySQL
- GIT
- react
- TypeScript
- Express
- Queue
- nodejs
- Python
- Sequelize
- cookie
- 공룡게임
- 게임
Archives
- Today
- Total
포시코딩
[백준][구현] 10809 - 알파벳 찾기 본문
728x90
문제
https://www.acmicpc.net/problem/10809
시간 제한과 메모리 제한도 넉넉하기 때문에
파이썬에서 문자열을 아스키 코드로 변환하는 함수를 알면 쉽게 풀 수 있는 문제다.
난이도도 solved.ac 기준 브론즈 2로 낮은 편에 속한다.
내 풀이
S = input()
for x in range(ord('a'), ord('z')+1):
print(S.find(chr(x)), end=' ')
알파벳의 아스키 코드 변환 함수인 ord를 통해 a~z 까지의 값을 구하고
list의 find 함수를 사용하여
해당 문자가 문자열의 몇 번째에 위치했는지, 없다면 -1를 리턴하게끔 만들었다.
이렇듯 간단히 풀긴 했지만 함수의 도움을 많이 받았기에
아래 코드처럼 다른 방법으로 푼 풀이도 흥미로워 포스팅하게 되었다.
다른 풀이
S = input()
arr = [-1] * 26 # a부터 z까지의 알파벳은 26개
for i in range(len(S)):
index = ord(S[i]) - ord('a')
if arr[index] == -1:
arr[index] = i
for x in arr:
print(x, end=' ')
마찬가지로 파이썬의 함수를 썼지만 ord만을 사용했다.
출력 결과를 a부터 z까지의 알파벳들의 처음 등장 위치를 구하는 것이므로
a~z의 등장 위치를 -1로 초기화한 리스트를 준비한다.
그 후, ord를 통해 a~z가 0~25의 index 값을 가지게 해서 만약 arr의 해당 위치가 -1이면
즉, 처음 등장했다면 등장 위치로 바꿔준다.
이렇게 a ~ z 문자들에 대해 문자열 S에서의 등장 위치를 구할 수 있다.
728x90
'자료구조알고리즘 > 문제풀이' 카테고리의 다른 글
[백준][위상 정렬][힙] 1766 - 문제집 (0) | 2023.05.11 |
---|---|
[백준][구현][완전 탐색] 1233 - 주사위 (0) | 2023.05.08 |
[백준][이진탐색] 2805 - 나무 자르기 (0) | 2023.04.30 |
[백준][이진탐색] 2110 - 공유기 설치 (0) | 2023.04.29 |
[백준][재귀] 1074 - Z (0) | 2023.04.28 |