본문 바로가기

알고리즘

[자료구조:스택] 백준 12605번 단어 순서 뒤집기

728x90
반응형

문제 요약

스페이스로 띄어쓰기 된 단어들의 리스트가 주어지면 단어들을 반대로 뒤집어라.

각 라인은 w개의 영단어로 이루어져 있고 총 L개의 알파벳을 가진다.

※ 각 행은 알파벳과 스페이스로만 이루어져 있고, 단어 사ㅣ에는 하나의 스페이스만 들어간다.

👉 백준 12605번 문제 바로가기

입력

첫 행은 N으로, 전체 케이스의 개수

N개의 케이스가 이어지는데, 각 케이스는 스페이스로 띄어진 단어들이다.

스페이스는 라인의 처음과 끝에는 나타나지 않는다.

N과 L의 범위

N = 5

1 <= L <= 25

출력

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

입출력 예시

입력 출력
3
this is a test
foobar
all your base
Case #1: test a is this
Case #2: foobar
Case #3: base your all

코드

약 10분 소요

import sys

n = int(input())
for i in range(n):
    S = sys.stdin.readline().split()
    print("Case #" + str(i + 1) + ":", end=" ")
    for _ in range(len(S)):
        print(S.pop(), end=" ")

피드백

readline 사용에 여전히 버벅거리는 부분도 있지만 많이 익숙해졌다.

코드 작성 시 여러번 사용 받는 부분은 최대한 readline 사용하도록 연습하자.

스택 문제 중 어려운 문제로 넘어갔더니 문제를 풀 수가 없어서 쉬운 문제부터 차근차근 풀고 있다. 어서 실버, 골드 문제도 풀 수 있게 되도록 열심히 풀어야지.

다른 사람 풀이 참고

for i in range(int(input())):
    s = input().split()
    print('Case #%d:'%(i+1), ' '.join(s[::-1]))

깨달은 것

  • for문의 range()에 바로 int(input)을 넣어 작성 가능
  • 출력 시 문자 내에 %d, %f 등을 활용하면 문자열을 쪼개지 않고 깔끔한 코드 작성 가능
  • "문자".join(리스트) 시 리스트를 문자열로 바꿔준다. (사이에 문자를 넣어서)
728x90
반응형