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

구미·2021년 5월 7일
0

알고리즘

목록 보기
2/25

제출한 코드

s = input()

# 알파벳 소문자 리스트 생성
list = [chr(i) for i in range(ord('a'), ord('z') + 1)]

# 찾은 인덱스 값을 저장할 빈 리스트 생성
result = []

# 각 알파벳마다 제일 처음 등장하는 인덱스 찾기
for alp in list:
  # 해당 알파벳이 문자열에 없으면 result 리스트에 -1 추가
  if alp not in s:
    result.append(-1)
  # 해당 알파벳이 문자열에 있으면 위치 찾기
  else: 
    for i in range(len(s)):
      # 각 알파벳이 문자열의 해당 인덱스의 알파벳과 일치한다면
      if alp == s[i]:
        # 문자열의 인덱스를 result 리스트에 저장하고 다음 알파벳으로 넘어가기
        result.append(i)
        break

for j in result:
  print(j, end = ' ')

리스트 안에 있는 요소들을 공백을 두고 하나씩 출력하는 방법이 생각나지 않아서 반복문을 사용해서 공백을 두고 출력했는데 join 을 이용하면 한 줄에 코드를 작성할 수 있다.

❗️ 이때 리스트는 문자열로만 구성되어 있어야 한다. 때문에 append 하는 요소들을 문자열로 변환해주는 과정을 거쳤다.

수정한 코드

s = input()

# 알파벳 소문자 리스트 생성
list = [chr(i) for i in range(ord('a'), ord('z') + 1)]

# 찾은 인덱스 값을 저장할 빈 리스트 생성
result = []

# 각 알파벳마다 제일 처음 등장하는 인덱스 찾기
for alp in list:
  # 해당 알파벳이 문자열에 없으면 result 리스트에 -1 추가
  if alp not in s:
    result.append('-1')
  # 해당 알파벳이 문자열에 있으면 위치 찾기
  else: 
    for i in range(len(s)):
      # 각 알파벳이 문자열의 해당 인덱스의 알파벳과 일치한다면
      if alp == s[i]:
        # 문자열의 인덱스를 result 리스트에 저장하고 다음 알파벳으로 넘어가기
        result.append(str(i))
        break

print(' '.join(result))

result 리스트를 사용하지 않고 문제를 풀 수 있을 것 같아서 코드를 다시 고쳤다.

재수정한 코드

s = input()

# 알파벳 소문자 리스트 생성
list = [chr(i) for i in range(ord('a'), ord('z') + 1)]

# 각 알파벳마다 제일 처음 등장하는 인덱스 찾기
for alp in list:
  # 해당 알파벳이 문자열에 없으면 result 리스트에 -1 추가
  if alp not in s:
    print(-1, end = ' ')
  # 해당 알파벳이 문자열에 있으면 위치 찾기
  else: 
    for i in range(len(s)):
      # 각 알파벳이 문자열의 해당 인덱스의 알파벳과 일치한다면
      if alp == s[i]:
        # 문자열의 인덱스를 result 리스트에 저장하고 다음 알파벳으로 넘어가기
        print(str(i), end = ' ')
        break

printend 옵션을 이용해서 공백을 두고 출력되도록 했다.

문제 출처
https://www.acmicpc.net/problem/10809

참고
https://m.blog.naver.com/PostView.nhn?blogId=complusblog&logNo=221158629508&proxyReferer=https:%2F%2Fwww.google.com%2F

profile
디지털 노마드를 꿈꾸며! 🦄 🌈

0개의 댓글