[백준 9093] 단어 뒤집기
2020. 7. 2. 22:27ㆍAlgorithm/practice
백준에 있는 브론즈 문제 최대한 많이 풀어보기 도전
https://www.acmicpc.net/problem/9093
1. stack 사용
첫 번째 방법
파이썬에서는 list 자료형이 stack 자료구조를 띈다. 입력 받은 sentence를 한 글자(c)씩 확인하였다. 그 때 글자가 ' '이거나 sentence의 맨 뒤에 오는 글자라면 stack에서 pop하였다. 하지만 맨 뒷글자인 경우에 stack에 추가해주어야 한다.
def myReverse(sentence):
answer, stack, cnt = '', [' '], 0
for c in sentence:
cnt += 1
if c == ' ' or cnt == len(sentence):
if cnt == len(sentence):
stack.append(c)
while stack:
answer += stack.pop()
stack.append(c)
print(answer)
for _ in range(int(input())):
myReverse(input())
두 번째 방법
문자열 함수인 split()를 활용하여 sentence의 단어별로 words 배열에 저장하였다. 순서대로 words 배열의 원소를 word에 저장한다. word를 리스트로 변환하여 wordStack이라는 변수에 할당하여 wordStack이 빌 때까지 pop하여 answer에 저장하였다. 이는 word당 하나의 stack을 배정한 것이다.
def myReverse(words):
answer = ''
for word in words:
wordStack = list(word)
while wordStack:
answer += wordStack.pop()
answer += ' '
print(answer)
for _ in range(int(input())):
myReverse(input().split())
2. map, lambda 사용
for _ in range(int(input())):
sentence = list(map(lambda x: ''.join(reversed(x)), input().split()))
print(' '.join(sentence))
'Algorithm > practice' 카테고리의 다른 글
[백준 2523번] 별찍기-13 (0) | 2020.07.08 |
---|---|
[백준 1110번] 더하기 사이클 (0) | 2020.07.08 |
[백준 10996번] 별찍기-21 (0) | 2020.07.08 |
[백준 11279번] 최대 힙 (0) | 2020.05.28 |
[백준 1697번] 숨바꼭질 (0) | 2020.05.22 |