차세대 지능형 교통시스템
2021. 9. 28. 21:48ㆍAlgorithm
- 목차
반응형
import sys
n, T = map(int, sys.stdin.readline().split())
signals = []
for i in range(n*n):
signals += list(map(int, sys.stdin.readline().split())),
inters = [[[0]*4 for x in range(n)] for y in range(n)]
rows = len(signals)
cols = len(signals[0])
for iidx in range(n*n):
y = iidx//n
x = iidx%n
for t in range(4):
inters[y][x][t] = signals[iidx][t]
signal_ways = {
1: [(0, 1), [(-1, 0), (0, 1), (1, 0)]],
2: [(-1, 0), [(0, -1), (-1, 0), (0, 1)]],
3: [(0, -1), [(-1, 0), (0, -1), (1, 0)]],
4: [(1, 0), [(0, -1), (1, 0), (0, 1)]],
5: [(0, 1), [(-1, 0), (0, 1)]],
6: [(-1, 0), [(0, -1), (-1, 0)]],
7: [(0, -1), [(0, -1), (1, 0)]],
8: [(1, 0), [(1, 0), (0, 1)]],
9: [(0, 1), [(0, 1), (1, 0)]],
10: [(-1, 0), [(-1, 0), (0, 1)]],
11: [(0, -1), [(-1, 0), (0, -1)]],
12: [(1, 0), [(0, -1), (1, 0)]]
}
visited = set()
def dfs(y, x, t, dir):
visited.add((y, x))
if t == T:
return 1
sig_num = inters[y][x][t%4]
valid_dir, next_coords = signal_ways[sig_num]
if dir != valid_dir:
return 1
cnt = 1
for oy, ox in next_coords:
if not (0 <= y + oy < n and 0 <= x + ox < n):
continue
cnt += dfs(y + oy, x + ox, t + 1, (oy, ox))
return cnt
cnt = dfs(0, 0, 0, (-1, 0))
print(len(visited))
반응형
'Algorithm' 카테고리의 다른 글
장애물 인식 프로그램 (0) | 2021.09.28 |
---|---|
택배 마스터 광우 (0) | 2021.09.28 |
2008. Maximum Earnings From Taxi (Medium) (0) | 2021.09.21 |
2006. Count Number of Pairs With Absolute Difference K (0) | 2021.09.21 |
2014. Longest Subsequence Repeated k Times (hard) (0) | 2021.09.21 |