[백준] 9093 단어 뒤집기

cheeeese·2021년 12월 29일
0

코딩테스트 연습

목록 보기
17/151

📖 문제

문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.

입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.

출력
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.

예제 입력 1

2
I am happy today
We want to win the first prize

예제 출력 1

I ma yppah yadot
eW tnaw ot niw eht tsrif ezirp

💻 내 코드

n=int(input())
res=[]

for i in range(n):
    s=input()

    slist=list(s.split())
    mlist=[]

    for k in slist:
        mlist.append(k[::-1])

    res.append(" ".join(mlist))

for r in res:
    print(r)

💡 추가

  • s[::-1]: 문자열 역순으로 출력
  • s[a:b:-1] : a번 인덱스부터 b+1번 인덱스까지 역순으로 출력

다른 방법(다른 사람 코드)

  • 스택 사용
N=int(input())

for i in range(N):
    string=input()
    string+=" "
    stack=[]
    for j in string:
        if j!=" ":
            stack.append(j)
        else:
            while stack:
                print(stack.pop(), end='')
            print(' ', end='')
  • j 값이 공백이 아닐 때 stack에 값을 넣고 공백일 때 stack이 빌 때까지 리스트 출력
  • string+=" "으로 마지막 단어 뒤에도 공백을 추가해 주어 스택에 넣고 꺼낼 수 있게 함

  • reverse 사용

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

0개의 댓글