이 문제는 풀지 못하여 여러 블로그들을 참고하여 답지를 보며 풀었다.
풀이 방법
1. init() - R, B를 찾아 큐에 넣어주는 함수.
2. move - 해당 방향으로 벽에 부딪히거나, O이 나올 때 까지 움직여준다. 그리고 움직인 거리를 cnt로 세어 좌표와 함께 반환해 준다. ( * 여기서 cnt를 같이 구하여 반환하는 이유는 만약 빨간 공과 파란 공이 겹쳐졌을 때, 둘 중 더 많이 움직인 공이 다른 공 위에 있어야 한다. 때문에 cnt를 계산하여 더 큰 값을 가지는 것이 다른 공 위에 있는 상태로 만들기 위해서 이다. - 이 부분이 가장 어려운 부분 중 하나가 아닐까 싶다.)
3. solve() - 1, 2함수를 활용하여 문제를 푸는 함수이다.
궁금증
1. 뭔가 이렇게 하면 너무 많은 경우의 수를 계산해주는 것 같은데 이런 생각이 왜 들까?
- 아,, 아마도 한쪽 방향으로 벽에 닿은 상태에서도 쭉 진행이 가능해서 그런 느낌이 드나보다.. 하지만 그건 depth>10으로 막아준 거구나.
후기
뭔가,,, 다음에 이 문제가 그대로 나왔을 때 풀지 못할 것 같은 느낌이 든다..ㅠㅠ
대충 무슨 말인지는 알겠는데, 이런 생각을 어떻게 하지?!
뭔가 다른 예외 상황까지 고려해준 코드 인건가?하는 느낌도 들고,,
visited 4차원 리스트도 정확히 이해가 안된다. 대충은 이해가 가는데 이렇게 해도 되는거야?하는 느낌,,
아 이 문제는 아직 나한테 어려운 건가 보다!
어떻게 내 것으로 만들지ㅣㅣ
그냥 계속 반복해보자
'개발 > 알고리즘' 카테고리의 다른 글
[BOJ] 보물섬_2589 (0) | 2021.02.22 |
---|---|
[BOJ] 탈출_3055 (0) | 2021.02.21 |
[BOJ] 리모콘_1107 (0) | 2021.02.19 |
이진 탐색(Binary Search)란? (0) | 2021.02.17 |
[BOJ] 트리의 지름_1167 (0) | 2021.02.16 |