[백준/Python] 17413번. 단어 뒤집기 2

문제

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))