문제풀이/일일연습문제

[스택/큐]99클럽 코테 스터디 13일차 TIL + 백준/Bronze/12605. 단어순서 뒤집기

Mo_bi!e 2024. 11. 10. 09:31

[Bronze II] 단어순서 뒤집기 - 12605 [문제 링크](https://www.acmicpc.net/problem/12605)

성능 요약 메모리: 31120 KB, 시간: 32 ms

분류 자료 구조, 파싱, 스택, 문자열

제출 일자 2024년 11월 10일 09:27:37

문제 설명

스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 이루어져 있다. 단어 사이에는 하나의 스페이스만 들어간다.

입력

첫 행은 N이며, 전체 케이스의 개수이다.

N개의 케이스들이 이어지는데, 각 케이스는 스페이스로 띄어진 단어들이다. 스페이스는 라인의 처음과 끝에는 나타나지 않는다. N과 L은 다음 범위를 가진다.

  • N = 5
  • 1 ≤ L ≤ 25

출력

각 케이스에 대해서, 케이스 번호가 x일때 "Case #x: " 를 출력한 후 그 후에 이어서 단어들을 반대 순서로 출력한다.

 

 

<내 코드>

import sys
N = int(sys.stdin.readline())
for _ in range(N):
    words = sys.stdin.readline().split()
    reverse_words = words[::-1]
    answer = " ".join(reverse_words)
    sys.stdout.write("Case #" + str(_+1) +": " + answer + "\n")

- 스택으로 안풀어서 아쉬운것은 있지만 단지 손쉽게 append(), pop으로 얼마든지 가능하리라 생각이 듬

 

- F""를 안

 

<모범사례>

- 일반적인 리스트 슬라이싱 방식

import sys

N = int(sys.stdin.readline().strip())

for i in range(1, N + 1):
    words = sys.stdin.readline().strip().split()
    reversed_words = " ".join(words[::-1])
    print(f"Case #{i}: {reversed_words}")

 

- 스택 / 큐 방식

import sys

N = int(sys.stdin.readline().strip())

for i in range(1, N + 1):
    words = sys.stdin.readline().strip().split()
    
    # 스택에 모든 단어를 push
    stack = []
    for word in words:
        stack.append(word)
    
    # 스택에서 단어를 pop하여 역순으로 저장
    reversed_words = []
    while stack:
        reversed_words.append(stack.pop())
    
    # 출력 형식에 맞춰 결과 출력
    print(f"Case #{i}: {' '.join(reversed_words)}")

 

 

<보충학습>

sys.stdout.write(f"Case #{_ + 1}: {answer}\n")

- 이런 방식으로 f-string 이용이 가능함

앞에다가 f"" 이렇게 이용하면됨