[BOJ] 백준 14676번 문제 풀이 (Python)

nkw011·2022년 8월 6일
0

baekjoon 문제 풀이

목록 보기
21/21

1. 문제 풀이

배열을 응용해서 문제를 풀었습니다.

  • building[i]building[i]: 건물 ii의 갯수
  • graph[i]graph[i]: ii를 건설하기 위해 필요한 건물 목록
  • 건물 ii를 건설할 때 graph[i]graph[i]에 있는 건물들이 모두 건설되어있지 않으면 Lier!
  • 건물 ii를 파괴할 때 building[i]building[i]가 0이면 Lier!

2. 코드

import sys
def input(): return sys.stdin.readline().rstrip()

n, m, k = map(int, input().split())
buildings = [0] * (n+1)
graph = [[] for _ in range(n+1)]

for _ in range(m):
    a, b = map(int, input().split())
    graph[b].append(a)

possible = True
for _ in range(k):
    a, b = map(int, input().split())
    if a == 1:
        for prev in graph[b]:
            if not buildings[prev]:
                possible = False
        if possible:
            buildings[b] += 1
    else:
        if not buildings[b]:
            possible = False
        if possible:
            buildings[b] -= 1
if possible:
    print("King-God-Emperor")
else:
    print("Lier!")
profile
Deep Dive into Development (GitHub Blog: https://nkw011.github.io/)

0개의 댓글