총 출력될 원소의 개수는 97 ~ 122까지 26개이다.
따라서 2Level-Nested-Loop 의 바깥 Loop 값 i가 97~122 range로 a부터 z까지의 아스키코드값이 된다.
그리고 Loop j는 입력받은 문자열을 아스키코드로 변환저장한 리스트가 range가 된다.
그리고 둘을 순차적으로 비교하여
if ) 입력리스트값이 아스키리스트에 존재하는 첫번째 경우,
dif변수에 해당 입력값의 리스트 위치를 저장하여 level-2의 반복을 break하고, level-1의 반복의 끝에서 dif에 저장한 값을 출력한다.
elif ) 입력 리스트값이 존재하지 않았을 경우, 반복의 시작에서 dif에 초기화되어있던 -1값을 그대로 level-1으로 들고나와 이를 출력한다.
이를 반복한다.
# a:97 ~ z:122
# (1)입력받은 문자열을 리스트로 변환
# (2)리스트 원소를 아스키코드로 변환
inputList = list( map( ord, list( input() ) ) )
for i in range(97,123) :
for j in range(len(inputList)) :
dif = -1
if inputList[j] == i :
dif = j
break
print(dif,end=' ')
리스트의 .find() 메소드를 이용하는 방법도 있다.
방법1의 탐색과정을 어렵게 NL로 구현할 필요 없이,
find() 메소드를 사용해 리스트 내 찾고자 하는 값의 위치를 반환할 수 있다.
inputWord = input()
alphabet = "abcdefghijklmnopqrstuvwxyz"
for i in alphabet:
inputWord.find(i)
이를 응용하면 더 짧게 풀어낼 수 있다.