코딩테스트 연습

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

zzzin 2022. 12. 12. 00:37

소문자로만 이루어진 단어가 주어지면, a-z까지의 알파벳이 대해 주어진 단어에 포함되어있으면 해당 위치를, 없다면 -1을 출력하는 프로그램을 작성하는 문제이다.

 

 

먼저, 첫 번째 풀이이다.

str = input()

for i in range(97, 123): # 소문자 a-z까지 돌면서 체크
  chk = -1
  for index, s in enumerate(list(str)): # 입력받은 문자열에서 있는지 체크
    if chr(i) == s:
      chk = index # 있으면 인덱스값 저장
      break # 여러 번 있는 경우 첫번째 인덱스를 받아오기 위해 다음 알파벳으로 이동

  print(chk, end=' ')

소문자로만 이루어진 문자열 str를 입력받아 a-z까지 돌면서 포함 여부와 인덱스를 추출하는 방식이다.

여기서 처음에는 break를 안넣고 돌렸더니, 같은 문자열이 중복되어 포함된 경우 마지막 인덱스를 가져오게 돼서 오답으로 처리가 되어서 추가했다.

 

 

다음으로, find() 함수를 이용한 풀이이다.

str = input()

for i in range(97, 123):
  num = str.find(chr(i)) # fin()함수는 미포함(-1), 포함되면 첫번째 인덱스 출력
  print(num, end=' ')

첫 번째 풀이에서 if문으로 해줬던 예외처리를 find() 함수를 이용하면 단축시킬 수 있다.

find() 함수는 기본적으로, 해당 입력값이 포함되면 첫 번째 인덱스만 반환하고 포함되지 않으면 -1을 반환하기 때문이다.

find() 함수와 유사하게 포함된 문자열의 인덱스를 반환하는 index() 함수도 있지만, index() 함수는 포함되지 않는 경우 -1이 아니라 오류값을 반환한다는 차이점이 있다.