14503번 - 로봇 청소기
우선 저는, DFS로 생각했습니다.
DFS함수의 인수를 y, x좌표, 로봇방향(dir), 깊이(L)로 설계했습니다.
왼쪽으로 회전할땐 dir을 1씩 줄이고 dir이 0이하면 다시 3으로 복구하여서
방향벡터의 인덱스로 쓸 생각이었습니다.
dy[4]={-1, 0, 1, 0};
dx[4]={0, 1, 0, -1};
에서 인덱스(dir)가 하나가 줄면 왼쪽으로 회전한다...이렇게요.
문제의 규칙 2a가 어떤경우든, 왼쪽으로 회전은 하니까
일단 회전부터 시켰습니다.
그래서 방문한 적이 없고, 빈 칸이면 다음 레벨(깊이)로의 재귀를 실시했습니다.
방문체크는 어차피 다음재귀 맨처음에 하니, 미리 하진 않았습니다.
제가 DFS로 짠 것때문에 시간초과가 뜬 걸까요?
DFS내 for문에서 여러 개의 DFS 분기가 생깁니다. 로봇 청소기가 왼쪽에 청소할 공간을 만나면 더 이상 회전할 필요가 없겠죠?
댓글을 작성하려면 로그인해야 합니다.
yunbinni 1년 전
우선 저는, DFS로 생각했습니다.
DFS함수의 인수를 y, x좌표, 로봇방향(dir), 깊이(L)로 설계했습니다.
왼쪽으로 회전할땐 dir을 1씩 줄이고 dir이 0이하면 다시 3으로 복구하여서
방향벡터의 인덱스로 쓸 생각이었습니다.
dy[4]={-1, 0, 1, 0};
dx[4]={0, 1, 0, -1};
에서 인덱스(dir)가 하나가 줄면 왼쪽으로 회전한다...이렇게요.
문제의 규칙 2a가 어떤경우든, 왼쪽으로 회전은 하니까
일단 회전부터 시켰습니다.
그래서 방문한 적이 없고, 빈 칸이면 다음 레벨(깊이)로의 재귀를 실시했습니다.
방문체크는 어차피 다음재귀 맨처음에 하니, 미리 하진 않았습니다.
제가 DFS로 짠 것때문에 시간초과가 뜬 걸까요?