[백준] 알파벳 찾기 1919번 파이썬 Python 자료구조

Jeony·2021년 11월 23일
0

백준

목록 보기
15/25
post-thumbnail

📌생각해보기

알파벳이 나열되어 있는 문제는 아스키코드를 활용해서 풀면 좋다.

문자를 아스키코드로 변환
ord("a") -> 97
ord("b") -> 98
ord("A") -> 65
ord("B") -> 66

아스키코드를 문자로 변환
chr(97) -> "a"
chr(98) -> "b"
chr(65) -> "A"
chr(66) -> "B"

📌내가 작성한 코드

c = ord("a")
t = ord('z')
alphabet = []
count = 0

while c <= t :
    alphabet.append(chr(c))
    c += 1
    count += 1
answer = [-1] * count

s = input()
location_count = -1

for i in s:
    for j in range(len(alphabet)):

        if i == alphabet[j]:
            location_count += 1

            if answer[j] <= -1:
                answer[j] = location_count

print(*answer)

📌구글링 후 수정한 코드

s = input()
alphabet = list(range(97, 123))

for i in alphabet:
    print(s.find(chr(i)), end=" ")

📌풀이

  1. 먼저 아스키코드로 97 ~ 123까지의 들어갈 자리를 만들어준다.
alphabet = list(range(97, 123))
  1. 원하는 문자가 어디에 있는지 찾아주고, 찾지 못하면 -1 반환하는 find 함수를 사용한다.

i에 a가 들어왔을 경우, chr(i)는 97이다.
위의 alphabet 리스트에 97 값이 없으므로 -1 반환한다.

i에 b가 들어왔을 경우, chr(i)는 98이다.
위의 alphabet 리스트에 98 값이 있으므로 찾게된다.

for i in alphabet:
    print(s.find(chr(i)), end=" ")

💡 end : " "는 값을 " " 안의 문자로 이어주는 역할을 한다.

profile
알고리즘으로 문제를 해결하다가 포기함

0개의 댓글