728x90
https://www.acmicpc.net/problem/10809
풀이 1 : 아스키 코드를 이용한 방법
S = input()
arr = []
for i in range(26):
arr.append(-1)
for i in range(len(S)):
if arr[ord(S[i]) - 97] == -1:
arr[ord(S[i]) - 97] = i
for i in arr:
print(i, end = ' ')
처음에 26가지 값을 -1로 설정하고 ord()함수로 해당 문자들의 유니코드 정수값을 반환받는다.
소문자의 범위는 97~122까지므로 97을 더 빼면 0~25까지의 정수값을 구할 수 있다.
값이 중복되는 경우를 제외하기 위해 최초 변경시에만 값을 바꿀 수 있게 만들었다.
풀이 2 : find()함수를 이용한 방법
find()는 문자열에서 특정 문자가 몇 번째에 위치해 있는지에 대한 값을 반환한다.(문자열에서만 가능하므로 리스트, 튜플과 같은 iterable 자료형에서는 index()함수를 사용해야 한다.)
찾는 문자가 없을 경우 -1을 반환한다.(index()함수는 AttributeError가 발생한다.)
chr()함수는 아스키코드 숫자를 문자로 변환하는 함수이다. 97~122의 값이 a~z로 바뀌게 된다.
S = input()
arr = list(range(97, 123))
for i in arr:
print(S.find(chr(i)))
728x90
'알고리즘 문제 풀이' 카테고리의 다른 글
[python] 백준 2231 : 분해합 (0) | 2022.02.02 |
---|---|
[python] 백준 1157 : 단어 공부 (0) | 2022.01.29 |
[python] 백준 3052 : 나머지 (0) | 2022.01.28 |
[python] 백준 2920 : 음계 (0) | 2022.01.28 |
[python] 백준 2908 : 상수 (0) | 2022.01.27 |