https://www.acmicpc.net/problem/17413
문제
21.02.16 접근법
뒤집을 땐 ck=0, 괄호 안에서 제대로 출력할 땐 ck=1으로 나눠 출력하게 하였다.
뒤집어 출력하다 '<'나 ' '를 만나게 되면 switch에 저장된 문자를 뒤집어 answer에 저장하고자 하였다.
이때, '<'일때는 ck=1로 변경해주어 정출력으로 가게 하였다.
21.02.16 코드
S=input()
switch=[]
answer=[]
ck=0
for i in range(len(S)):
if ck==0:
if S[i]=='<' or S[i]==' ':
if S[i]=='<':
ck=1
answer+=switch[::-1]
switch=[]
answer+=S[i]
else:
switch.append(S[i])
elif ck==1:
if S[i]=='>':
ck=0
answer.append(S[i])
if switch:
answer+=switch[::-1]
for i in range(len(answer)):
print(answer[i],end='')
21.07.22 접근법
2월과 똑같이 접근함.
코드에서 다른 점은, 2월은 묶어서 안에서 if문으로 또 구분을 했다면 이번엔 다 각자 구분해줌.
1. 문장 입력 받은 후 1글자씩 확인하기
2. '<' 만나면 flag=1, 그대로 ans에 저장
3. falg=1일 땐, 그대로 ans에 저장
3. '>'만나면 그대로 ans에 저장하고 flag=0으로 변경
4. 단어일 때는 word에 저장 후, <만나거나 공백 만나면 뒤집어서 ans저장
5. 마지막에 남은 단어 word에 있을 경우, 뒤집어서 ans에 저장 후 출력
+주의할 점
if-else문할 때 순서 주의
if문 순서만 바뀌어도 원하는 결과가 안 나옴.
21.07.22 코드
from collections import deque
flag=0
ans=''
word=''
ary=input()
for i in ary:
if i=='<':
flag=1
ans+=word[::-1]
word=''
ans+=i
elif i=='>':
flag=0
ans+=i
elif flag==1:
ans+=i
elif i==' ':
ans+=word[::-1]
ans+=' '
word=''
elif flag==0:
word+=i
ans+=word[::-1]
print(ans)
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 17298번 오큰수 - 파이썬(Python) (1) | 2021.07.28 |
---|---|
[백준] 10799번 쇠막대기 - Python(파이썬) (0) | 2021.07.26 |
[백준] 10866번 덱 - Python(파이썬) (0) | 2021.07.22 |
[백준] 1158번 요세푸스 문제 - Python(파이썬) (0) | 2021.07.22 |
[백준] 10845번 큐 - Python(파이썬) (0) | 2021.07.22 |