๋ฌธ์
https://www.acmicpc.net/problem/14907
๋ฌธ์ ํ์ด
์์์ ๋ ฌ ๋ฌธ์
์ ๋ ฅ์ด ํน์ดํด์ ์ ๊ฒฝ์จ์ค์ผํ๋ ๋ฌธ์
INPUT์ ๊ธฐ์ค์ผ๋ก for๋ฌธ์ ๋๋ ธ์ผ๋ฉฐ ๊ฐํ๋ง ๋ค์ด์ฌ ์ break ํ๋๋ก ํด์ฃผ์๋ค.
๋ ์ํ๋ฒณ์ด ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๊ธฐ๋๋ฌธ์ index๋ก ํ์ฉํ๊ธฐ ์ํด ord ๋ณํ ํด์ฃผ์๋ค.
์๊ณ ๋ฆฌ์ฆ์ ๋ณดํต์ ์์์ ๋ ฌ ๋ฌธ์ ์ ํฌ๊ฒ ๋ค๋ฅผ ๊ฒ์ด ์์ผ๋, result๋ฅผ ๊ตฌํ ๋ max ํจ์๋ก ๋ชจ๋ ์์ ์ด ๋๋ ๋์ ์๊ฐ์ ๊ตฌํด์ค
์ฝ๋
import sys
input=sys.stdin.readline
##์์์ ๋ ฌ
res=[0]*(26)
graph=[[] for _ in range(26)]
indegree=[0]*(26)
time=[0]*(26)
for INPUT in sys.stdin:
if INPUT=='\n':
break
temp=INPUT.split()
tmp=ord(temp[0])-65
time[tmp]=int(temp[1])
prev=list(str(temp[2:]))[2:-2]
graph[tmp].append(prev)
for i in prev:
index=ord(i)-65
indegree[index]+=1
result=0
que=[]
for i in range(26):
if indegree[i]==0 and time[i]!=0:
res[i]=time[i]
result=max(result,res[i])
que.append(i)
while que:
temp=que.pop()
for i in range(len(graph[temp][0])):
index=graph[temp][0][i]
index=ord(index)-65
indegree[index]-=1
res[index]=max(res[index],res[temp]+time[index])
result=max(result,res[index])
if indegree[index]==0:
que.append(index)
print(result)
'๐ปAlgorithm > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ/๋ฐฑ์ค] 1043 ๊ฑฐ์ง๋ง - ํ์ด์ฌ (0) | 2022.08.18 |
---|---|
[BOJ/๋ฐฑ์ค] 9742 ์์ด - ํ์ด์ฌ (0) | 2022.05.11 |
[BOJ/๋ฐฑ์ค] 2160 ๊ทธ๋ฆผ๋น๊ต - ํ์ด์ฌ (0) | 2022.05.11 |
[๋ฐฑ์ค/BOJ] 1449 ์๋ฆฌ๊ณต ํญ์น - ํ์ด์ฌ (0) | 2022.05.08 |
[2017 ์นด์นด์ค์ฝ๋ ์์ ] ์ปฌ๋ฌ๋ง๋ถ - ํ์ด์ฌ (0) | 2022.03.16 |