[백준 9093] 단어 뒤집기
2020. 7. 2. 22:27ㆍAlgorithm/practice
백준에 있는 브론즈 문제 최대한 많이 풀어보기 도전
https://www.acmicpc.net/problem/9093
9093번: 단어 뒤집기
문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의
www.acmicpc.net
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 |