깡뇽

[백준] 10809번 알파벳 찾기 파이썬 본문

Algorithm/BAEKJOON

[백준] 10809번 알파벳 찾기 파이썬

깡뇽 2022. 3. 15. 14:17
반응형

문자열 문제를 풀어보았다.

 

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

반응형