내가 생각한 방법
1.list에 저장. 근데 list의 경우 element갯수가 994 이상 저장 안 되는 것을 저번 fibonacci 문제를 풀면서 알고 있음 그래서 만약 단일 단어로 1000개가 들어온다면 틀릴 수밖에 없음.
아니라는 가정 하에 문제를 풀면
1-1 list의 pop, append 활용
1-2 stack 자료구조 만들어서 풀기
2.하나의 string으로 저장한 이후 stack자료구조를 활용 문제를 해결.
공백문자일 경우를 기준으로 push, pop 진행하면 된다.
내가 푼 방식은 1-2방식으로 풀었음. 근데 n 3승의 시간 복잡도라 수정하는 것이 좋아보임.
2번 방식으로 수정해보고 시간 비교하려고 함.
class Node:
def __init__(self, data = None):
self.data = data
self.next = None
class stack:
def __init__(self):
self.top = None
self.size = 0
def push(self, data):
node = Node(data)
self.size += 1
if self.top:
node.next = self.top
self.top = node
def pop(self):
if self.size == 0:
return -1
self.size -= 1
data = self.top.data
self.top = self.top.next
return data
n = int(input())
Stack = stack()
for _ in range(n):
a = list(input().split())
for i in a:
for j in i:
Stack.push(j)
for _ in i:
print(Stack.pop(), end='')
print(' ', end='')
print('')
class Node:
def __init__(self, data = None):
self.data = data
self.next = None
class stack:
def __init__(self):
self.top = None
self.size = 0
def push(self, data):
node = Node(data)
self.size += 1
if self.top:
node.next = self.top
self.top = node
def pop(self):
if self.size == 0:
return -1
self.size -= 1
data = self.top.data
self.top = self.top.next
return data
n = int(input())
Stack = stack()
a = []
for _ in range(n):
a.append(input())
for i in range(n):
print(a[i])
for j in a[i]:
# print(f'input : {j}')
if j == ' ' or '\n':
while True:
b = Stack.pop()
if b == -1:
break
print(b, end='')
print(' ', end='')
else:
Stack.push(j)
2 code 는 실패했다. 문자열 끝을 c언어처럼 지정할 수가 없었음. 분명 내장함수가 있을 텐데... 흠...