코딩테스트 준비/백준

[백준] 17413번 단어 뒤집기 2 - Python(파이썬)

youjin86 2021. 7. 22. 22:24

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

 

17413번: 단어 뒤집기 2

문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져

www.acmicpc.net

 

문제

 

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)