1) 사이트
2) 문제
간단히 말하면 a부터 z까지 몇 번째로 처음 발견되는지를 출력하면 됩니다.
3) 파이썬 코드
alpha=input()
al_li=list(alpha)
order_li=[str(-1)]*100
number=0
for i in al_li:
storage=ord(i)-97
if order_li[storage]!='-1':
number=number+1
continue
else:
order_li[storage]=str(number)
number=number+1
print(' '.join(order_li[0:26]))
3-1) 선수 지식
파이썬 코드를 이해하기 위해 알아야 할 선수 지식이 있습니다.
1. 문자열을 리스트로 바꾸는 법
-> list(문자열)
2. 문자열 초기화 시키는 법
-> list 변수명 = [리스트를 채울 무언가]*몇개
3. 아스키코드
a는 97이다.(b는 98 ....)
문자를 아스키코드로 바꾸려면 ord()
4. 리스트를 문자열로 바꾸는 법
-> '문자열 사이 구분할 것'.join(리스트)
3-2) 설명
1. 문자열이 100개는 넘지 않는다고 했다. 또한 없는 알파벳은 -1 처리한다고 하였으므로 기본 리스트를 -1로 초기화 한다.
-1을 문자로 채우는 이유는 마지막에 join으로 리스트를 문자열로 바꿔주기 위함이다.
-> order_li=[str(-1)]*100
2. number는 각 알파벳이 몇 번째 자리에 있는지를 알려준다.
3. for문을 돌려 문자열 각각 읽고 아스키코드로 변경한 후 -97을 해주어 무슨 알파벳인지 인식한다.
그 후 storage에 해당 값 넣어줌
-> 0이면 a, 1이면 b...
4. 해당 알파벳 리스트 자리에 이미 -1 이상의 수가 있다면 전에 나온 적 있는 수로 간주하고 컨티뉴한다.
하지만, number는 꼭 +1 해줄 것! (문자열 위치를 나타내기 때문이다.)
5. -1이라면 해당 알파벳 자리수에 number를 넣어준다.
-> order_li[storage] = number
6. for문이 끝나면 리스트를 문자열로 바꿔준다.
a~z까지는 26자리이다.(리스트에 0~25번째 저장된 수가 출력된다.)
-> print(' '.join(order_li[0:26]))
4) c언어 코드
아직~
파이썬에 대한 기초를 다시 돌아볼 수 있었던 문제
모르는 점이나 상의할 것이 있다면 댓글로 남겨주세요~
끝!
'알고리즘 > 백준' 카테고리의 다른 글
1152번 단어의 개수 (0) | 2021.05.11 |
---|---|
1157번 단어 공부 (0) | 2021.05.10 |
2675번 문자열 반복 (0) | 2021.04.26 |
11720번 숫자의 합 (0) | 2021.04.18 |
11654번 아스키코드 (0) | 2021.04.18 |