백준10809 알파벳 찾기 in Python

horiz.d·2021년 10월 30일
0

방법 1

총 출력될 원소의 개수는 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=' ')



방법2 : short-cut

리스트의 .find() 메소드를 이용하는 방법도 있다.

방법1의 탐색과정을 어렵게 NL로 구현할 필요 없이,
find() 메소드를 사용해 리스트 내 찾고자 하는 값의 위치를 반환할 수 있다.

inputWord = input()
alphabet = "abcdefghijklmnopqrstuvwxyz"

for i in alphabet:
    inputWord.find(i) 
  • TIP : 문자열을 그대로 for문의 in에 적용할 경우
    리스트화시키므로 분해된 문자를 원소로하는 리스트가 된다.

이를 응용하면 더 짧게 풀어낼 수 있다.

profile
가용한 시간은 한정적이고, 배울건 넘쳐난다.

0개의 댓글