코딩테스트/백준

[백준][Python] 10845. 큐

내만 2022. 8. 24. 14:24
728x90
반응형

반응형

 

 

 

 

 

 

🙆‍♂️문제


 

🙋‍♂️풀이


 

🚀 입력받기


import sys
n = int(sys.stdin.readline())
com=[list(sys.stdin.readline().split()) for _ in range(n)]

시간 제한이 있기 때문에 빠른 입력인 sys.stdin.readline()을 통해서 입력을 받습니다.

이러면 엔터(\n)도 입력되는데 사실 상관이 없는게 엔터 입력된 부분을 접근하지 않아서 괜찮습니다.

 

🚀 문제 풀이 핵심 & 출력


queue=[]
for i in com:
    lenQ = len(queue)
    if i[0] == 'push':
        queue.append(i[1])
    elif i[0] == 'pop':
        if lenQ == 0:
            print(-1)
        else:
            print(queue[0])    
            queue.pop(0)
    elif i[0] == 'size':
        print(lenQ)
    elif i[0] == 'empty':
        if lenQ == 0:
            print(1)
        else:
            print(0)
    elif i[0] == 'front':
        if lenQ == 0:
            print(-1)
        else:
            print(queue[0])
    elif i[0] == 'back':
        if lenQ == 0:
            print(-1)
        else:
            print(queue[-1])

먼저 queue라는 리스트를 선언하여 데이터들을 저장할 수 있도록 합니다.

그리고 입력받은 명령어들을 반복문으로 돌리고

lenQ라는 변수에 queue라는 길이를 저장하여 사용합니다.

 

 

    if i[0] == 'push':
        queue.append(i[1])

push라는 명령어가 들어오면 해당 입력된 값(i[1])을 queue 리스트에 추가합니다.

 

    elif i[0] == 'pop':
        if lenQ == 0:
            print(-1)
        else:
            print(queue[0])    
            queue.pop(0)

pop 명령어가 들어오면 리스트의 길이가 0인지 확인하여 0이라면 -1을 출력하고

리스트의 길이가 0보다 크다면 가장 앞에 있는 queue[0]을 출력하고 pop를 통해 제거해줍니다.

 

    elif i[0] == 'size':
        print(lenQ)

정수의 개수는 리스트의 길이와 같기 때문에 lenQ를 출력합니다.

 

    elif i[0] == 'empty':
        if lenQ == 0:
            print(1)
        else:
            print(0)

리스트의 길이가 0이라면 큐가 비어있는 것이기에 0이면 1을 출력하고 아니면 0을 출력합니다.

 

    elif i[0] == 'front':
        if lenQ == 0:
            print(-1)
        else:
            print(queue[0])

리스트의 길이가 0인지 확인하고 0이라면 -1을 출력

아니면 가장 앞에 있는 0번째 인덱스를 출력합니다.

 

    elif i[0] == 'back':
        if lenQ == 0:
            print(-1)
        else:
            print(queue[-1])

리스트의 길이가 0인지 확인하고 0이라면 -1을 출력

아니면 가장 뒤에 있는 -1번째 (이렇게 하면 리스트의 제일 뒤의 인덱스를 가리키게 됩니다.)를 출력합니다.

 

 

728x90

728x90
반응형