컴공생의 다이어리
[파이썬, Python] 백준 14676번 : 영우는 사기꾼? 본문
백준 14676번 : 영우는 사기꾼?
내 코드
import sys
from collections import defaultdict
input = sys.stdin.readline
# n : 건물 종류의 개수, M : 건물 사이의 관계수, k : 영우의 게임 정보의 개수
n, m, k = map(int, input().split())
graph = defaultdict(list) # 건물 관계
indegree = [0] * (n + 1) # 진입 차수
build = [0] * (n + 1) # 빌딩 몇개 지어졌는지
check = False # 치트키 여부
for _ in range(m): # 건물 관계
x, y = map(int, input().split())
graph[x].append(y) # x를 건설해야 y를 건설 가능
indegree[y] += 1 # 진입차수
for _ in range(k): # 영우의 게임 정보
t, a = map(int, input().split())
if t == 1: # 건설
if indegree[a]: # 진입 차수가 있다면 바로 건설 X
check = True
break
build[a] += 1 # a 빌딩 하나 건설
if build[a] == 1: # a 빌딩 지어진 경우
for i in graph[a]: # 관련 건물들 진입 차수 1씩 감소
indegree[i] -= 1
else: # 파괴
if build[a] <= 0: # a 빌딩이 지어진 적 없는 경우
check = True
break
build[a] -= 1 # a 빌딩 하나 파괴
if not build[a]: # 마지막 건물이 파괴된 경우
for i in graph[a]: # 관련 건물들 진입 차수 1씩 증가
indegree[i] += 1
if check: # 치트키 사용했다면
print('Lier!')
else:
print('King-God-Emperor')
728x90
'Development > Algorithm & Coding Test' 카테고리의 다른 글
[파이썬, Python] 백준 7569번 : 토마토 (0) | 2022.06.04 |
---|---|
[알고리즘] 다익스트라(Dijkstra) (0) | 2022.06.02 |
[파이썬, Python] 백준 1474번 : 밑 줄 (0) | 2022.05.21 |
[파이썬, Python] 백준 1005번 : ACM Craft (0) | 2022.05.20 |
[파이썬, Python] 백준 1715번 : 카드 정렬하기 (0) | 2022.05.19 |
Comments