[BOJ/백준] 17413. 단어 뒤집기2 (python)

노다현·2021년 1월 1일
0

알고리즘

목록 보기
11/22
post-thumbnail
post-custom-banner

https://www.acmicpc.net/problem/17413

Problem

< > 괄호 안의 문자는 그대로 출력하고 그 외의 단어는 거꾸로 뒤집어 출력한다.

단어는 공백을 기준으로 구분하며, < > 괄호 안의 문자는 단어가 아니다.

Solution

큐와 스택을 이용하였다.

< > 태그 안의 문자는 deque에 넣고 꺼낼 때 popleft()를 이용해 넣은 순서대로 나오게 해 순서를 유지시켜준다.

단어는 stack에 넣어 출력시 순서를 뒤집어 나올 수 있게 해준다.

상태 변수를 만들어 '<'를 만나면 그 전까지 스택에 저장되어 있던 단어들을 결과값에 거꾸로 저장해준다.

그리고 '태그 안' 이라는 뜻으로 False로 바꾸어준다.

'>'를 만나면 태그가 끝났으므로 상태를 True로 바꾸어준다.

문자들은 현재 상태가 False 상태이면 큐에 넣어주고, True이면 스택에 넣어준다.


공백을 만났을 때를 주의해야하는데, 태그 안의 상황일 때는 그냥 큐에 넣어도 순서대로 출력되기 때문에 무관하지만, 태그 밖의 상황일 때에는 스택에 넣으면 거꾸로 출력이 되기 때문에 스택에 있는 문자들을 모두 pop해준 다음 공백을 출력해주어야 한다.

문자들을 끝까지 다 살펴보고 나면 스택에 남아있는 문자가 없는지 조사하고 있으면 모두 거꾸로 출력한다.

Python Code

profile
DAilyHYUN.log
post-custom-banner

1개의 댓글

comment-user-thumbnail
2021년 6월 6일

잘봤습니덩

답글 달기