Python/코딩 테스트

4주차 알고리즘 먼데이

Young_Metal 2022. 10. 27. 17:16

1번 체크카드

import sys
from collections import deque
input = sys.stdin.readline
n, m = map(int, input().split())
wait = deque()
def checkcard(t,check, k):
	if check == 'deposit':
		t = t+k
	elif check == 'pay':
		if t-k >=0:
			t = t-k
		else:
			return t
	elif check =='reservation':
		if t-k>=0:
			t = t-k
		elif (t-k<0) or len(wait):
			wait.append([check, k])
	return t


for i in range(m):
	if len(wait):
		c, m = wait.popleft()
		if n>=m:
			n = checkcard(n,c,m)
		else:
			wait.appendleft([c,m])
	check, money = input().split()
	k = int(money)
	n = checkcard(n, check, k)
	
print(n)

 

근데 2개정도인가에서 fail 떴다. 

 

2번

런타임 에러 뜸 ㅋㅋㅋㅋㅋ 아무리 생각해도 queue나 stack을 써야함

# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
import sys
input = sys.stdin.readline
import numpy
n = int(input())
dx = [0,0,1,-1]
dy = [1,-1,0,0]
mat = [list(map(int, input().split())) for _ in range(n)]
cnt = 0
count = 1
total = sum(mat,[])
while sum(total) !=0:
	for i in range(n):
		for k in range(n):
			for t in range(n):
				nx = i+dx[t]
				ny = k+dx[t]
				if 0<nx<n and 0<=ny<n:
					if mat[nx][ny] ==0:
						cnt +=1
			if mat[i][k]-cnt>=0:
				mat[i][k] -=cnt
			else:
				mat[i][k]=0
	total = sum(mat, [])
	count +=1
print(count)

3번은 손도 안댔고

 

4번은 경우의 수 문제인데 모르겟다...ㅠ