반응형
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 |
Tags
- CSS
- 검색트리
- 클린코드
- DFS
- android
- javascript
- 프로그래머스
- front-end
- 구현
- 해슁
- Color
- 코딩테스트
- DP
- java
- 정렬
- SQL
- 다이나믹 프로그래밍
- inflearn
- Spring
- 알고리즘
- CleanCode
- BFS
- html
- algorithm
- Kotlin
- 자바
- codecademy
- 순환
- Web
- SWEA
Archives
- Today
- Total
깡뇽
[백준] 10809번 알파벳 찾기 파이썬 본문
반응형
문자열 문제를 풀어보았다.
10809번 알파벳 찾기 풀이
[시도2] 맞았습니다!!
word = input() # 입력받은 단어
alphabet = 'abcdefghijklmnopqrstuvwxyz' # 전체 알파벳
answer = [-1] * 26 # 출력을 위한 배열
# 입력받은 단어에 있는 글자를 알파벳에서 몇 번째인지 찾은 후에 배열에 표시
for i in range(len(word)):
flag = word[i] # 입력받은 단어 하나
idx = alphabet.index(flag) # 입력받은 단어의 위치
if answer[idx] == -1: # 처음 등장하는 위치라면
answer[idx] = i # 배열에 해당 등장 위치 넣어주기
# 출력
for j in answer:
print(j, end=" ")
파이썬은 문자열을 쉽게 다룰 수 있으므로 전체 알파벳들을 문자열로 만들어 인덱스를 활용하여 문제를 풀었다.
입력받은 단어 word에서 앞의 글자부터 차례대로 flag에 담는다. flag의 글자가 알파벳 문자열에서 몇 번째에 있는지 index() 함수로 찾아 idx로 담아주고, 출력을 위한 배열(알파벳이 단어에 포함되어 있지 않다면 -1을 출력하므로 -1로 26개의 배열을 초기화 해둠)에서 해당 idx 자리를 그 알파벳이 단어에서 처음 등장한 위치 번호 i로 변경해준다.
첫 시도에서 최종 출력을 print(answer)로 하였고, 배열 그대로 출력되기 때문에 오답처리가 되었었다. 출력 형태를 주의해야한다는 교훈을 얻었다.

# 다른 솔루션
word = input()
check = [-1] * 26
for i in range(len(word)):
if check[ord(word[i]) - 97] != -1:
continue
else:
check[ord(word[i]) - 97] = i
for i in range(26):
print(check[i], end=' ')
a의 아스키코드가 97인 것을 이용해서 문제를 풀 수도 있다. - 참고) https://j-remind.tistory.com/62
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준] 11399번 ATM 파이썬 (2) | 2022.04.18 |
---|---|
[백준] 9012번 괄호 파이썬 (0) | 2022.03.21 |
[백준] 8958번 OX퀴즈 파이썬 (0) | 2022.03.08 |
[백준] 4963번 섬의 개수 파이썬 (0) | 2022.03.05 |
[백준] 2210번 숫자판 점프 파이썬 (0) | 2022.03.04 |