원형큐로 구현한 피보나치

박진은·2022년 5월 5일
0

자료구조

목록 보기
12/37
class Queue:
    def __init__(self):
        self.maxQ = 10
        self.list = [None] * self.maxQ
        self.front = 0
        self.rear = 0

    def isFull(self):
        return self.front == (self.rear + 1) % self.maxQ

    def peek(self):
        if not self.isEmpty():
            return self.list[self.rear]

    def enqueue(self, item):
        if not self.isFull():
            self.rear = (self.rear + 1) % self.maxQ
            self.list[self.rear] = item

    def dequeue(self):
        if not self.isEmpty():
            self.front = (self.front + 1) % self.maxQ
            return self.list[self.front]

    def clear(self):
        self.front == self.rear

    def isEmpty(self):
        return self.rear == self.front

    def size(self):
        return (self.front - self.rear + self.maxQ) % self.maxQ

    def display(self):
        if self.rear > self.front:
            self.list[self.front + 1:self.rear + 1]
        else:
            self.list[(self.front + 1) % self.maxQ:self.maxQ] + self.list[0:(self.rear + 1) % self.maxQ]

def fibonacci(c):
    Q = Queue()
    Q.enqueue(0)
    Q.enqueue(1)
    if c == 1:
        return 1
    elif c == 0:
        return 0

    for i in range(c):
        b = Q.peek()
        a = Q.dequeue()

        Q.enqueue(a + b)
    return Q.dequeue()

def fido(c):
    if c ==1 :
        return 1
    elif c == 0:
        return 0
    f_1 = 1
    f_0 = 0
    for i in range(c-1):
        f_2 = f_1 + f_0
        f_0 = f_1
        f_1 = f_2
    return f_2

print(fido(5))
print(fibonacci(5))
def fibonacci(c):
    Q = Queue()
    Q.enqueue(0)
    Q.enqueue(1)
    if c == 1:
        return 1
    elif c == 0:
        return 0

    for i in range(c):
        b = Q.peek()
        a = Q.dequeue()

        Q.enqueue(a + b)
    return Q.dequeue()

시험보기 전에 한번씩 보고 시험에 임할것

profile
코딩

0개의 댓글