S
가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.첫째 줄에 단어 S
가 주어진다. 단어의 길이는 100
을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
각각의 알파벳에 대해서, a
가 처음 등장하는 위치, b
가 처음 등장하는 위치, ... z
가 처음 등장하는 위치를 공백으로 구분해서 출력한다.
만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1
을 출력한다. 단어의 첫 번째 글자는 0
번째 위치이고, 두 번째 글자는 1
번째 위치이다.
n = input() # baekjoon
check = [-1] * 26
for i in range(len(n)):
index = ord(n[i]) - ord('a') # 101 - 97
if(check[index] == -1):
check[index] = i
# check[1] = 0
# check[0] = 1
# check[4] = 2
for i in range(len(check)):
print(check[i], end=" ")
-1
을 담은 check
배열 생성check
배열에 매핑시키기 위해 ord
메소드를 이용해서 ASCII 값으로 변환n[i]
이 b
이면 98
이고 , a
가 97
이므로 98 - 97 = 1
이 index
에 위치하게 된다. check[index]
가 -1
이면 해당 알파벳이 처음 등장한 것이므로 현재 위치 i
를 저장check
배열을 순회 해서 줄바꿈없이 출력word = input()
for i in 'abcdefghijklmnopqrstuvwxyz':
print(word.find(i))
find
메서드를 통해 문자열에서 특정 문자가 처음 등장하는 인덱스를 반환, 문자가 문자열에 없으면 -1
을 반환baekjoon
이라면:
- 다른 풀이가 훨씬 간결하고 코드도 깔끔해 보이고
find
메소드,ord
를 통한 ASCII 코드 변환 방법도 알게 되었다❗