백준 17413 파이썬

정재혁·2022년 7월 29일
0

백준 17413번 단어뒤집기2 문제

문제


입력 및 출력값


풀이:

해당 문제는 <>내부에 있는 내용은 그대로 출력하고 그 외에 있는 것들은 띄어쓰기를 기준으로 각 단어들만 뒤집어 출력하는 형태로 진행했다. 이를 위해서 처음 while문을 통해 <> 사이에 있는 내용과 아닌 것들을 분리하고 이를 리스트에 단어별로 저장했다.
그 후 단어의 시작이 '<'인지 아닌지 확인하고 아니라면 이를 하나의 단어로 가져와 띄어쓰기를 기준으로 또다시 구분한 후 이를 뒤집은 후 띄어쓰기를 기준으로 더해주어 다시 원 배열에 넣어주는 형태로 코드를 구현했다.

반복문 특히 while문을 많이 사용해 시간 초과가 뜰 것 같았지만 오히려 for문을 사용했을 때 보다 i +=1 을 활용해 전체를 빠르게 훑을 수 있어서 통과 된 것 같다.

코드:

s = input()
i = 0

ans_lst =[]
while i < len(s):
    st = ''
    lst = []
    if s[i] == '<':
        lst.append(s[i])
        i += 1
        while i < len(s):
            if s[i] == '>':
                lst.append(s[i])
                i += 1
                break
            else:
                lst.append(s[i])
                i += 1
        for j in lst:
            st += j
        ans_lst.append(st)

    else:
        lst.append(s[i])
        i += 1
        while i < len(s):
            if s[i] == '<':
                for j in lst:
                    st += j
                ans_lst.append(st)

                break
            else:
                lst.append(s[i])
                i += 1
                if i == len(s) - 1:
                    lst.append(s[i])
                    for j in lst:
                        st += j
                    ans_lst.append(st)
                    break



ans_lst2 =[]
for i, s in enumerate(ans_lst):
    if s[0] =='<':
        continue
    else:
        lst = s.split()
        w = ''
        for j, word in enumerate(lst):
            lst_word = []
            for q in word:
                lst_word.insert(0,q)

            for q in lst_word:
                w += q
            if j < len(lst)-1:
                w += ' '
        ans_lst[i] = w
for i in ans_lst:
    print(i,end='')

profile
저는 정재혁임니다^___^

0개의 댓글