bj9093 단어뒤집기

coh·2022년 6월 6일
0

백준

목록 보기
17/27

내가 생각한 방법
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번 방식으로 수정해보고 시간 비교하려고 함.

1-1 code

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('')

2 code

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언어처럼 지정할 수가 없었음. 분명 내장함수가 있을 텐데... 흠...

profile
Written by coh

0개의 댓글