반응형

문제 설명

문제의 포인트
- 아스키코드로 a-z를 알면 쉽게 풀 수 있다
- list와 str 값을 가져오는 방식의 차이를 알아야 한다
- index 함수를 사용할 줄 알아야 한다
- find 함수를 사용할 줄 알아야 한다
- 함수 활용에 따라 문제 풀이를 여러 방법으로 할 수 있다.
첫 번째 문제 풀이 방법
첫 줄에 단어를 입력받아야 한다.
word = input()
알파벳을 리스트나 str 형식으로 받아야하는데, 첫 번째로는 리스트 형식으로 받아보겠다.
alphabet = list(range(97, 123))
- 해당 값의 결과를 출력해보면
alphabet = list(range(97, 123)) print(alphabet) print(type(alphabet)) ----------------------------------console------------------------------------ [97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122] <class 'list'>위의 우ㅣ의
위의 결과처럼 alphabet 리스트의 값들은 정수 형태로 저장되어 있으므로, chr(i) 라는 기능을 이용해 정수 값을 문자로 인식하게 해야 한다.
alphabet = list(range(97, 123)) #정수 변환 전 print(alphabet) #정수 변환 후 for i in alphabet: print(chr(i), end=' ') ----------------------------------console------------------------------------ [97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122] a b c d e f g h i j k l m n o p q r s t u v w x y z
마지막으로 alphabet 리스트에서 입력받은 값을 찾아주는 find 함수를 이용하기만 해도 문제의 출력값이 바로 나온다.
word = input() alphabet = list(range(97, 123)) for i in alphabet: print(word.find(chr(i)), end=' ') ----------------------------------console------------------------------------ qwer -1 -1 -1 -1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 3 -1 -1 -1 -1 1 -1 -1 -1 baekjoon 1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
두 번째 문제 풀이 방법
첫 줄에 단어를 입력받는다.
word = input()
두 번째 줄에는 알파벳을 전부 입력해 기다란 str 변수(abc)를 만든다.
abc ='abcdefghijklmnopqrstuvwxyz'
두 str 변수 abc를 for문으로 돌려 입력값이 존재할 때는 인덱스 값을 넣고, 존재하지 않을때는 -1을 넣는다. 이 때, str형태인 abc는 리스트가 아니어도 인덱스 값을 뽑아볼 수 있다.
for i in abc: if i in word: print(word.index(i), end= ' ') else: print( -1, end =' ')
주의할 점
abc ='abcdefghijklmnopqrstuvwxyz' 를 사용하는 대신
abc = list(range(97, 123)) 를 사용할 수 있냐면,
답은 no 이다.
이 경우
위 abc는 타입이 str
아래 abc는 타입이 list
list일 경우 위의 코드로 답이 안 나오니 abc가 str이어야한다는 점에 유의해야 한다.
정답 코드
#답1
word = input()
alphabet = list(range(97, 123)) # 아스키코드 숫자 범위
for i in alphabet:
print(word.find(chr(i)), end=' ')
#답2
word = input()
abc ='abcdefghijklmnopqrstuvwxyz'
# abc2 = list(range(97, 123))
for i in abc:
if i in word:
print(word.index(i), end= ' ')
else:
print( -1, end =' ')
'''
abc는 되고 abc2는 안 되는 이유?
이 경우
abc는 타입이 str
abc2는 타입이 list
list일 경우 답이 안 나오니 abc가 str이어야한다는 점에 유의해야 함!
'''
반응형
'IT' 카테고리의 다른 글
백준 / Python / 2444 / 별 찍기 - 7 / 문제풀이 (0) | 2023.05.18 |
---|---|
백준 / Python / 5622 / 다이얼 / 문제풀이 (0) | 2023.05.04 |
백준 / Python / 2675 / 문자열 반복 / 문제풀이 (0) | 2023.05.03 |
파이썬 기초 / Python / 인덱스 (0) | 2023.04.27 |
자잘한 Oracle Database SQL 명령어 모음 (0) | 2023.04.25 |
백준 / Python / 10818 / 최소, 최대 / 문제풀이 (0) | 2023.04.25 |
백준 / Python / 10871 / X보다 작은 수 / 문제풀이 (0) | 2023.04.25 |
백준 / Python / 1001 / A-B (0) | 2023.04.24 |
댓글