게임개발

minjun kim·2024년 4월 17일

Check Point !
( 해당사항 ✓체크 )

막힘 없이 수월하게 풀린 문제인가?

1시간이내로 풀렸던 문제인가?

1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가? ✅

시간을 써도 도무지 풀 수 없는 문제인가?

솔루션을 찾아봤는가? ✅

난이도 체감

최상

중 ✅

<이해도>

완벽히 이해

다소 헷갈리는 부분들이 있음

이해 못함

<덧붙일 말>

BFS문제 유형이랑 너무 닳았는데 quequ를 사용하진 않는다.

n,m = map(int,input().split()) # 세로,가로
x,y, direction = map(int,input().split())
board = [list(map(int,input().split())) for _ in range(m)]
dist = [[0]* n for _ in range(n)]
dx = [0,1,0,-1]
dy = [-1,0,1,0]
dist[x][y] = 1

def turn_left():
    global direction
    direction -= 1
    if direction == -1:
        direction = 3

cnt = 1
turn_time = 0 
while True:
    turn_left()
    nx = x + dx[direction]    
    ny = y + dy[direction]
    
    if dist[nx][ny] == 0 and board[nx][ny] == 0:
        dist[nx][ny] = 1
        x = nx
        y = ny
        cnt += 1 
        turn_time = 0
        continue
    
    else:
        turn_time += 1
    
    if turn_time == 4:
        nx = x - dx[direction]
        ny = y - dy[direction]
        
        if board[nx][ny] != 1 and dist[nx][ny] == 1:
            x = nx
            y = ny
        else:
            break
        turn_time = 0

print(cnt)

direction부분을 설정하는 부분과, 해당 이동하는 방향자체를 수정하는 문제가 독특했다.
이에따른 왔던방향으로 다시 뒤로 이동하는 조건을 달아주는방법이 까다롭다 문제를 많이 풀어봐야 할 것 같다.

profile
배움의 흔적을 남기고 싶습니다.

0개의 댓글