문제
https://www.acmicpc.net/problem/17413
풀이
조건이 약간 까다로운 단순 구현 문제다
0부터 인덱스를 증가해가며 문자열 끝까지 검사하되
<가 나오면 >의 다음 인덱스까지 인덱스를 증가시키고 해당 범위를 정답 리스트에 추가하고
공백이 나오면 인덱스를 1 증가하여 다음 인덱스를 가리키고 공백을 정답 리스트에 추가하고
그 밖의 다른게 나오면 문자나 숫자이므로 문자열의 끝을 만나거나 문자나 숫자가 아닐때까지 인덱스를 증가시키고 해당 범위를 뒤집어 정답 리스트에 추가하고
정답 리스트를 join해서 출력하면 된다.
- 파이썬에서 "문자열[::-1]"을 통해 문자열을 쉽게 뒤집을 수 있다.
- ::로 모든 문자열을 -1 만큼의 증가폭을 가지고 출력하므로 뒤집힌다
- 파이썬에서 문자인지 검사할땐 isalpha(), 숫자인지 검사할땐 isdigit() 한번에 검사할땐 isalnum()을 사용한다
- 여기서 "문자"는 알파벳, 한글, 한자를 포함하는 유니코드 카테고리 중 'Letter' 카테고리에 속하는 모든 언어문자를 의미하며 #,$,%같은 일반적인 특수문자는 제외된다는점을 알아두자.
정답 코드
message = input()
answerList = []
idx = 0
while idx < len(message):
if message[idx] == '<':
startIdx = idx
while message[idx] != '>':
idx += 1
idx += 1
answerList.append(message[startIdx:idx])
elif message[idx] == ' ':
idx += 1
answerList.append(' ')
else:
startIdx = idx
while idx < len(message) and message[idx].isalnum():
idx += 1
answerList.append(message[startIdx:idx][::-1])
print(''.join(answerList))
'알고리즘 > 백준' 카테고리의 다른 글
[백준/Python] 9935번. 문자열 폭발 (0) | 2024.11.15 |
---|---|
[백준/Python] 1213번. 팰린드롬 만들기 (0) | 2024.11.15 |
[백준/Python] 4659번. 비밀번호 발음하기 (0) | 2024.11.15 |
[백준/Python] 11279번. 최대 힙 (0) | 2024.11.15 |
[백준/Python] 1927번. 최소 힙 (0) | 2024.11.15 |