문제 링크 : https://www.acmicpc.net/problem/17413
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다.
먼저, 문자열 S는 아래와과 같은 규칙을 지킨다.
태그는 '<'로 시작해서 '>'로 끝나는 길이가 3 이상인 부분 문자열이고, '<'와 '>' 사이에는 알파벳 소문자와 공백만 있다. 단어는 알파벳 소문자와 숫자로 이루어진 부분 문자열이고, 연속하는 두 단어는 공백 하나로 구분한다. 태그는 단어가 아니며, 태그와 단어 사이에는 공백이 없다.
첫째 줄에 문자열 S가 주어진다. S의 길이는 100,000 이하이다.
첫째 줄에 문자열 S의 단어를 뒤집어서 출력한다.
예제 입력 :
baekjoon online judge
예제 출력 :
noojkeab enilno egduj
예제 입력2 :
<open>tag<close>
예제 출력2 :
<open>gat<close>
코드
import sys
from collections import deque
input = sys.stdin.readline
str = list(input().strip())
result = []
queue = deque()
flag = 0
for i in range(len(str)):
if str[i] == ' ':
while queue:
result.append(queue.pop())
result.append(str[i])
elif str[i] == '<':
while queue:
result.append(queue.pop())
flag = 1
result.append(str[i])
elif flag == 1 and str[i] == '>':
flag = 0
result.append(str[i])
elif flag == 1:
result.append(str[i])
elif flag == 0:
queue.append(str[i])
while queue:
result.append(queue.pop())
print(''.join(result))
1. 문자열 문자를 배열에 하나씩 넣기
list(문자열) 하면 된다!
그래서 list(input().strip()) 으로 문자가 들어간 배열 생성
2. 반대로 문자로 이루어진 배열을 문자열로 합치기
''.join(배열)
print(''.join(list)) # List의 Element들을 공백없이 붙임
print(' '.join(list)) # List의 Element들을 공백을 이용해서 구분
print('-'.join(list)) # List의 Element들을 '-' 문자를 이용해서 구분
print('\n'.join(list)) # 한줄에 하나씩 출력
'< ' 만난 후에 while 로 '>' 만날 때까지
조건을 사용하여 조금 더 간단하게
코딩을 할 수 있을 것 같다.
사실 저 코드가 시간 초과가 뜰 줄 알았는데
그렇진 않았다. 오~
그래서 while로 바꿔서 i += 1씩 하려다가..
나중에 시간 나면 하기로 했다.
(안하겠다는 뜻)
우선은 저것도 맞는 방법이니까~
처음으로 백준 첫 제출에 맞았습니다가 뜬 것 같다
기분좋~다~
다른 문제들도 화이팅해야지..
[Python] 백준 20437번 - 문자열 게임 2 (0) | 2022.01.28 |
---|---|
[Python] 백준 17609번 - 회문 (0) | 2022.01.27 |
[Python] 백준 20291번 - 파일 정리 (0) | 2022.01.25 |
[Python] 백준 1764번 - 듣보잡 (0) | 2022.01.25 |
[Python] 백준 2206번 - 벽 부수고 이동하기 (0) | 2022.01.25 |
댓글 영역