BOJ 5573 : 산책

2021. 11. 16. 00:02PS/DP

https://www.acmicpc.net/problem/5573

여학 때 풀지 못해서 업솔빙을 한 문제이다.

 

우리는 K번 후 각 위치에 대해 몇 번 방문했느냐에 따라 다음 방향이 달라짐을 관찰 할 수 있다. 

이를 dp로 구하면 된다.

dp[i][j] = (i,j)를 몇 번 지나갔는가?

 

dp[1][1]은 초기 위치에서 몇 번 지나갔는가를 물으므로 k-1일테고, 식은

dp[i+1][j] = dp[i][j]/2 + (dp[i][j]%2(i,j에서의 초기 방향이랑 다른가) & !a[i][j](초기방향이 아래))(오른쪽으로 갈 때)

dp[i][j+1] = dp[i][j]/2 + (dp[i][j]%2(i,j에서의 초기 방향이랑 다른가) & a[i][j](초기방향이 오른쪽))(아래로 갈 때)

.

이를 구하고 답을 dp테이블로 추적해서 구하면 된다.

 

괜찮은 문제라고 생각한다. 이렇게 접근하는 것도 처음이어서 좀 기억에 남기도 했다.

코드

'PS > DP' 카테고리의 다른 글

BOJ 1126 : 같은 탑  (0) 2021.11.16
BOJ 9520 : NP-Hard  (0) 2021.11.16
BOJ 1023 : 올바른 괄호  (0) 2021.08.17
BOJ 17428 : K번째 괄호 문자열  (0) 2021.08.14
BOJ 6171 : 땅따먹기  (1) 2021.08.08