[백준] 7569, 9012 - Python3

shsh·2021년 10월 28일
0

백준

목록 보기
25/45

9012. 괄호

https://www.acmicpc.net/problem/9012

내 풀이 - 성공

from sys import stdin

T = int(stdin.readline())

for _ in range(T):
    s = stdin.readline().strip()
    stack = []
    ans = "YES"
    for i in range(len(s)):
        if s[i] == "(":
            stack.append(s[i])
        elif s[i] == ")":
            if stack:
                stack.pop()
            else:
                ans = "NO"
                break
    if stack:
        ans = "NO"
    print(ans)

열린 괄호는 stack 에 저장하고
닫힌 괄호는 stack 에 값이 있으면 pop
stack 에 값이 없는데 닫힌 괄호가 들어왔거나 열린 괄호만 남을 경우 NO 출력


7569. 토마토

https://www.acmicpc.net/problem/7569

3 차원 배열이라 더 헷갈리고
재귀로는 너무 오래 걸릴 것 같아 풀지 못했다...

다른 사람의 풀이

from sys import stdin
import collections

M, N, H = map(int, stdin.readline().split())
box = []
queue = collections.deque([])

for i in range(H):
    h = []
    for j in range(N):
        l = list(map(int, stdin.readline().strip().split()))
        h.append(l)
        for k in range(M):
            if l[k] == 1:
                queue.append([i, j, k])
    box.append(h)

dx = [-1,1,0,0,0,0]
dy = [0,0,1,-1,0,0]
dz = [0,0,0,0,1,-1]

while queue:
    x, y, z = queue.popleft()
    for i in range(6):
        a = x+dx[i]
        b = y+dy[i]
        c = z+dz[i]
        if 0 <= a < H and 0 <= b < N and 0 <= c < M and box[a][b][c] == 0:
            queue.append([a,b,c])
            box[a][b][c] = box[x][y][z]+1

ans = 0
for i in range(H):
    for j in range(N):
        for k in range(M):
            if box[i][j][k] == 0:
                print(-1)
                exit(0)
        ans = max(ans, max(box[i][j]))
print(ans-1)

토마토가 저장된 박스에 대한 정보를 box 에 모두 저장 => 3 차원 배열
queue 에 익은 토마토 정보를 모두 저장 => [i, j, k] 인덱스

위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향의 인접 인덱스를 확인하기 위해
dx, dy, dz 생성 => 반복문을 돌렸을 때, 차례대로 x, y, z +- 1 되도록 함

queue 의 값을 하나씩 pop 하면서 인접한 위치 중에 익지 않은 토마토가 있으면
queue 에 저장하고 box 값 + 1 로 update
=> 하루가 지나면 익는 토마토니까 저장

가능한 토마토들을 다 익게 만들었으면 다시 보면서 안 익은 토마토가 있는지 확인
있으면 -1 출력
없으면 최댓값으로 ans update
=> 가장 큰 ans 값이 최소 일수가 된다

냅다 외워!!!

profile
Hello, World!

0개의 댓글