개발자 톡
연습문제 톡
[HSAT 1회 정기 코딩 인증평가 기출] 안전운전을 도와줄 차세대 지능형 교통시스템
반례좀 찾아주실 수 있을까요?
- 등록일
- 2023-12-18 21:00:45
- 조회수
- 388
- 작성자
- rlsotlr01
import sys
from collections import deque
signals = { # 들어오는 방향, 갈수 있는 방향
"1": ["r", ["u", "r", "d"]],
"2": ["u", ["l", "u", "r"]],
"3": ["l", ["u", "l", "d"]],
"4": ["d", ["l", "d", "r"]],
"5": ["r", ["u", "r"]],
"6": ["u", ["l", "u"]],
"7": ["l", ["l", "d"]],
"8": ["d", ["d", "r"]],
"9": ["r", ["r", "d"]],
"10": ["u", ["u", "r"]],
"11": ["l", ["l", "u"]],
"12": ["d", ["l", "d"]],
}
move = {"u": (0, -1), "l": (-1, 0), "r": (1, 0), "d": (0, 1)}
# 입력값 정리
N, T = map(int, sys.stdin.readline().split())
actions = [[[] for _ in range(N)] for _ in range(N)]
intersections = [[0 for _ in range(N)] for _ in range(N)]
# 이부분 x랑 y 위치가 이상해서 수정함.
for j in range(N):
for i in range(N):
actions[i][j] = list(map(str, sys.stdin.readline().split()))
time = 0
num_intersection = 0
init_x = 0
init_y = 0
init_dir = "u"
que = deque()
que.append((init_x, init_y, time, init_dir))
# print("actions : ", actions)
while que:
x, y, time, dir = que.popleft()
if (0 <= x < N) and (0 <= y < N) and (time <= T):
# 행동 추출
# print("x: ", x, ", y: ", y, "time: ", time, ", dir: ", dir)
# print("action xy: ", actions[x][y])
action = actions[x][y][time%4]
# 이동경로 추출
dir_trans = signals[action]
# 차량의 이동 방향과 신호등의 이동 방향이 다를 경우 패스
# print("dir_trans: ", dir_trans)
# print("action: ", action)
# 방향이 같지 않을 경우를 필터
if (dir_trans[0] != dir):
continue
# 방문 표시
if (intersections[y][x]==0):
intersections[y][x] = 1
num_intersection += 1
for transition in dir_trans[1]:
dx, dy = move[transition]
next_x = x+dx
next_y = y+dy
if (0 <= next_x < N) and (0 <= next_y < N) and (time < T):
que.append((next_x, next_y, time+1, transition))
print(num_intersection)
아무리 찾아도 반례를 못찾겠고, 또 논리적인 결점도 찾지 못해서 이렇게 올립니다 ㅜㅜ.
코드의 어디가 문제일까요?
#[hsat_1회_정기_코딩_인증평가_기출]_안전운전을_도와줄_차세대_지능형_교통시스템
#hsat
#지능형
#교통시스템