본문 바로가기
Algorithm

[자료구조/스택] 백준 17413 단어 뒤집기 2 - 파이썬(Python)

by jangThang 2022. 6. 13.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    17413번: 단어 뒤집기 2

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

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     단어를 뒤집어서 출력하는 문제입니다. 다만, <태그> 안 단어는 뒤집으면 안됩니다.

     

    2022.02.28 - [Algorithm] - [구현/수학] 백준 9093 단어 뒤집기 - Python

     

    [구현/수학] 백준 9093 단어 뒤집기 - Python

    [ Contents ] 1. 문제 (링크 참조) 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문

    star7sss.tistory.com

     단어 뒤집기 1 문제에서 단어 뒤집기를 구현했습니다. 공백을 구분으로 단어를 뒤집기만 하면 되므로, 굳이 스택을 쓰지 않더라도 [::-1] 리스트 슬라이싱으로 가능했습니다.

     이 문제도 tag 유무에 따라 [::-1]를 해줘도 되나, 조금 논리가 복잡해져서 스택을 사용했습니다.

     

     

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    string = input().rstrip()
    word_stack = []
    tag = False
    res = ''
    
    for s in string:
        # 공백이면 word_stack 비움
        if s == " ":
            while word_stack:
                res += word_stack.pop()
            res += s
    
        # 태그 안 단어는 뒤집지 않음
        elif s == "<":
            while word_stack:
                res += word_stack.pop()
            tag = True
            res += s
    
        elif s == ">":
            tag = False
            res += s
    
        elif tag:
            res += s
    
        # 태그 밖 단어는 뒤집음
        else:
            word_stack.append(s)
    
        # print(res, tag)
    
    # 출력
    while word_stack:
        res += word_stack.pop()
    print(res)

     스택은 선입후출의 구조를 가진 자료구조입니다. 먼저 들어간 자료가 가장 늦게 나옵니다. 따라서 스택을 이용하면 자연스레 단어가 뒤집어서 출력됩니다.

     태그 밖 단어들은 스택에 넣어서 반대로 출력하고, 태그 안 단어들은 그대로 출력합니다.

     

    2022.02.10 - [Algorithm] - [Algorithm] 스택(stack), 차곡차곡 쌓는 자료구조

     

    [Algorithm] 스택(stack), 차곡차곡 쌓는 자료구조

    [ Contents ] 1. 스택(Stack) 스택(Stack): 후입선출(Last-in-First-out). 가장 최근에 들어간 자료부터 꺼내는 자료구조  스택은 말 그대로 쌓는(stack) 자료 구조입니다. 아래서부터 차곡차곡 쌓은 다음, 위에.

    star7sss.tistory.com

     

     

    star가 되고나서 Tistory

    반응형

    댓글