[ BOJ / Python ] 17413번 단어 뒤집기 2

황승환·2021년 12월 17일
0

Python

목록 보기
52/498

이번 문제는 입력받은 문자열에서 <가 등장하면 >가 등장할 때까지 문자열을 가만히 냅두고, 숫자나 알파벳이 등장하면 시작 위치를 저장하고, 숫자나 알파벳의 끝까지를 뒤집어서 저장하여 해결하였다. 알파벳 뒤집기를 수월하게 하기 위해 입력받은 문자열은 배열로 변경하여 처리하고 출력 시 파이썬 내장함수 join을 사용하여 문자열로 붙여 출력했다.

  • 문자열 line을 입력받는다.
  • line을 배열로 변경한다.
  • 배열을 검사할 때 쓰이는 인덱스 cur변수를 0으로 정의한다.
  • 숫자나 알파벳이 시작하는 인덱스를 저장하는 chk변수를 0으로 정의한다.
  • cur이 line의 길이보다 작을 동안 반복되는 while문을 돌린다.
    -> 만약 line[cur]이 <일 경우,
    --> line[cur]이 >이 아닐 동안 반복하는 while문을 돌린다.
    ---> cur을 1 증가시킨다.
    --> cur을 1 증가시킨다.
    -> 만약 line[cur]이 숫자나 알파벳일 경우,
    --> chk를 cur로 갱신한다.
    --> cur이 line의 길이보다 작고 line[cur]이 숫자나 알파벳일 동안 반복하는 while문을 돌린다.
    ---> cur을 1 증가시킨다.
    --> line[chk:cur]을 저장할 임시 변수 tmp를 선언하고 line[chk:cur]을 넣어준다.
    --> tmp를 거꾸로 뒤집는다.
    --> line[chk:cur]을 tmp로 갱신한다.
    -> line[cur]이 <, 숫자, 알파벳 모두 아닐 경우 cur을 1 증가시킨다.
  • 배열 line을 문자열로 출력한다.

Code

line=str(input())
line=list(line)
cur=0
chk=0
while len(line)>cur:
    if line[cur]=='<':
        while line[cur]!='>':
            cur+=1
        cur+=1
    elif line[cur].isalnum():
        chk=cur
        while cur<len(line) and line[cur].isalnum():
            cur+=1
        tmp=line[chk:cur]
        tmp.reverse()
        line[chk:cur]=tmp
    else:
        cur+=1
print(''.join(line))

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글