본문 바로가기
알고리즘/알고리즘 설명

기초 자료구조의 구현과 응용

by JayAlex07 2023. 5. 22.

🧑‍💻 기초 자료구조의 구현과 응용

멀티잇 코딩테스트 러닝클래스'Python 5월반

 

 

Stack

말 그대로 stack을 구현하면 된다

stack은 Last In First Out 규칙을 가지고 있다

stack에 들어갈 수 있는 용량이 정해졌다

  • stack이 이미 꽉 찼을 때에, 값을 넣어야 하면, "Overflow"를 출력
  • stack에 아무것도 없는데, 값을 빼야 하는 명령어가 실행되면, "Underflow"를 출력한다
N, K = map(int, input().split())

stack = []

for _ in range(N):
    command = list(input().split())

    if command[0] == "push":
        if len(stack) < K:
            stack.append(int(command[1]))
        else:
            print("Overflow")

    else:
        if stack:
            num = stack.pop()
            print(num)
        else:
            print("Underflow")

 

 

체크 카드

모의고사 때 풀었던 문제다

  • 모의고사 때에는 문제를 완벽하게 이해를 못 한 체로 풀었던 것 같다

명령어들은 코드로 짜는 것은 기본이다

  • 제일 중요했던 점은, 대기 목록에 금액이 있는데, 앞에서 부터 차례대로 그 금액을 결제할 수 있으면, 결제를 해야 한다
    • while문으로 처리
from collections import deque

money, M = map(int, input().split())

reserve = deque([])

for _ in range(M):
    command, value = input().split()
    value = int(value)

    if command == "deposit":
        money += value

    elif command == "pay":
        if value <= money:
            money -= value

    elif command == "reservation":
        if len(reserve) == 0 and value <= money:
            money -= value
        else:
            reserve.append(value)

    while reserve:
        if money >= reserve[0]:
            money -= reserve.popleft()
        else:
            break

print(money)

'알고리즘 > 알고리즘 설명' 카테고리의 다른 글

다이나믹 프로그래밍  (0) 2023.05.24
그리디 알고리즘, 원인과 결과 찾기  (0) 2023.05.23
완전 탐색  (0) 2023.05.11
시뮬레이션과 창의적 해결  (2) 2023.05.09
기초 수학과 구현  (0) 2023.05.05