개발자 톡

연습문제 톡 [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
#지능형
#교통시스템

이 카테고리의 톡 더보기