Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 코드스테이츠
- 백준
- Next.js
- Til
- superstarjypnation
- javascript
- 해시테이블
- useState
- React
- 자료구조
- 30daysdowoonchallenge
- 운영체제
- 큐
- UI
- CSS
- html
- UX
- REST_API
- level1
- 카카오
- web
- 자바스크립트
- 프로그래머스
- vercel
- 프로토타입
- mysemester
- 스택
- 회고
- 생활코딩
- redux
Archives
- Today
- Total
데굴데굴
[파이썬] 9093번: 단어 뒤집기 본문
9093번: 단어 뒤집기
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는
www.acmicpc.net
[입력]
I am happy today
[출력]
I ma yppah yadot
나의 풀이
리스트 내장 함수를 사용하면 간단하게 풀 수 있는 문제이다.
백준 알고리즘 기초 강좌에 이 문제가 수록되어 있어 스택을 활용해 풀어보았다.
파이썬에는 스택이 따로 없고 그 기능을 리스트가 전부 제공하기에 리스트를 이용했다.
문자열을 공백을 기준으로 나눈 리스트로 입력받는다. ex) ['I', 'am', 'happy', 'today']
각 단어의 알파벳을 스택에 저장한 후, 다 저장되면 차례대로 팝하여 새 문자열에 저장한다.
거꾸로 된 단어가 완성될 때마다 새 리스트에 넣는다.
join을 이용해 리스트를 문자열로 출력한다.
# 단어 뒤집기
for _ in range(int(input())):
s = list(input().split())
reverse_s = []
for chunk in s:
stack = []
word = ''
for i in range(len(chunk)):
stack.append(chunk[i])
for j in range(len(stack)):
word += stack.pop()
reverse_s.append(word)
print(' '.join(reverse_s))
진짜 일차원적으로 생각해서 풀었다. for문도 엄청 중복돼서 좋은 코드가 아니다.
어떻게 하면 간단하게 풀 수 있을지 궁금해서 다른 사람들의 풀이를 찾아보았다.
다른 사람의 풀이
# 다른 풀이
n = int(input())
for i in range(n):
string = input()
string += " "
stack = []
for j in string:
if j != " ":
stack.append(i)
else:
while stack:
print(stack.pop(), end="")
print(' ', end='')
공백이 아니라면 알파벳을 스택에 넣고 공백이라면 단어가 끝났다는 뜻이므로 스택에 있는 알파벳을 차례대로 팝하여 프린트한다. 프린트한 후에는 끝에 공백을 넣어 단어와 단어를 구분한다.
문장 끝에 공백을 넣지 않으면 마지막 단어에서는 팝이 수행되지 않으므로 입력받은 문장 끝에 공백을 꼭 넣어준다.
리스트로 풀기
n = int(input())
for i in range(n):
s = list(input().split())
for j in s:
print(j[::-1], end=" ")
print()
::-1을 인덱스로 주면 거꾸로 출력한다. 마찬가지로 단어와 단어 사이에 공백이 오도록 end를 공백으로 구분한다.
print()
가 없을 때
print()
가 있을 때
'algorithm > 백준' 카테고리의 다른 글
[파이썬] 1158번: 요세푸스 문제 (0) | 2022.07.13 |
---|---|
[파이썬] 11557번: Yangjojang of The Year (0) | 2022.07.10 |
[파이썬] 7568번: 덩치 (0) | 2022.07.06 |
[파이썬] 2231번: 분해합 (0) | 2022.07.05 |
[파이썬] 17478번: 재귀함수가 뭔가요? (0) | 2022.07.01 |
Comments