BOJ/C++

[BOJ] 18809. Gaaaaaaaaaarden

IamToday 2020. 3. 25. 14:53

 

* 배양액들의 조합을 구해서 배치한다. 

* 큐를 [초록색 배양액, 빨간색 배양액] 으로 두 개를 사용하는데 

depth와 좌표 정보를 넣었다. 

 

depth는 처음에 문제를 잘 못 이해해서 예시를 보고 추가했다. 

G 1 or 2 R

이렇게 되어있을 때만 가운데 좌표에 꽃이 필 수 있다. 

동시에 도달했을 때의 정보를 넣어줘야 하는데 그 정보를 depth로 기록했다. 

 

*depth를 기록했다면 이 정보를 빠르게 찾아내야 하는데, 이 정보는 dp[][] 배열에 기록해서 

빨간색 배양액이 다음에 갈 곳에 이미 초록색 배양액이 있다. -> dp[nx][ny] 가 depth + 1 이면 초록색 배양액이 방금 전에 도달한 곳이다라는 정보를 찾아낼 수 있다. -> 꽃을 틔운다. 

 

*50*50 인데 조합까지 해서 그런지 시간이 꽤 걸린다. 최적화는 나중에..