[백준] 10809 - 알파벳 찾기 (Python)

민영·2021년 8월 23일
0

[Algorithm] 백준

목록 보기
12/31
post-thumbnail

문제

https://www.acmicpc.net/problem/10809

제출 코드

import sys

sentence = sys.stdin.readline().rstrip()

alphabet = {'a': -1, 'b': -1, 'c': -1, 'd': -1, 'e': -1,
            'f': -1, 'g': -1, 'h': -1, 'i': -1, 'j': -1,
            'k': -1, 'l': -1, 'm': -1, 'n': -1, 'o': -1,
            'p': -1, 'q': -1, 'r': -1, 's': -1, 't': -1,
            'u': -1, 'v': -1, 'w': -1, 'x': -1, 'y': -1, 'z': -1}

num = 0
for s in sentence: 
    if alphabet[s] == -1:
        alphabet[s] = num
    num += 1

for n in alphabet.values(): 
    print(n, end=' ')

결과


정리

문제 설명

이 문제의 포인트는 단어에 (1)포함되어 있는 경우에는 처음 등장하는 위치를, (2)포함되어 있지 않은 경우에는 -1을 출력하는 것이다.
먼저 (2)번은 처음에 딕셔너리를 선언할때 '-1'로 선언하는 것으로 구현했다.

다음 (1)번은 다음과 같이 구현했다.

num = 0
for s in sentence:
    if alphabet[s] == -1:  #처음 등장한 알파벳이라면
        alphabet[s] = num  #그 알파벳의 위치 저장
    num += 1

코드 설명을 하자면 alphabet[s]가 -1이라는 뜻은 초기화한 그대로라는 뜻이다. 즉, 지금 알파벳이 처음 등장하는 알파벳이라는 뜻이다. 따라서 그 알파벳의 위치를 저장해준다.
alphabet[s]이 -1이 아니라면 자연스럽게 continue가 되는 것이다. (+위치를 알려주는 변수인 num을 사용했다.)

주석있는 코드

import sys

sentence = sys.stdin.readline().rstrip()

alphabet = {'a': -1, 'b': -1, 'c': -1, 'd': -1, 'e': -1,
            'f': -1, 'g': -1, 'h': -1, 'i': -1, 'j': -1,
            'k': -1, 'l': -1, 'm': -1, 'n': -1, 'o': -1,
            'p': -1, 'q': -1, 'r': -1, 's': -1, 't': -1,
            'u': -1, 'v': -1, 'w': -1, 'x': -1, 'y': -1, 'z': -1}

num = 0
for s in sentence:
    if alphabet[s] == -1:  #처음 등장한 알파벳이라면
        alphabet[s] = num  #그 알파벳의 위치 저장
    num += 1

for n in alphabet.values(): #결과 출력
    print(n, end=' ')

느낀점

-1로 초기화하면 쉽게 할 수 있는데.. 처음에 0으로 초기화해두고 코딩하다가 점점 산으로 갔었닼ㅋㅋㅋㅋ

profile
그날의 기록

0개의 댓글

관련 채용 정보