2021년 08월 23일 TIL
오늘은 정답률 0.95%의 2021 카카오 6번 문제를 풀었다.
https://programmers.co.kr/learn/courses/30/lessons/72415
카드 짝 맞추기 문제였는데, 굉장히 꼼꼼히 구현해야하는 시뮬레이션 문제였다. 이런 구현에 오래 걸리는 문제가 6번에 있으면, 풀 수 있을까…하는 생각이 드는 문제였다.
문제 풀이에서 가장 고전한 것은, 첫 로직 세우기에 실패한 점이었다. 카드를 제거하는 조합을 순열로 완탐으로 구해야한다는 생각을 미처 하지 못하고,
시작 지점에서 가장 가까운 카드를 탐색하여 우선적으로 삭제하면 되지 않을까? 라고 생각하였다. 그걸로 예제로 주어지는 테스트케이스는 통과할 수 있었지만,
모든 테스트 케이스를 통과하진 못했다.
그것이 통과하지 못하자 1차적으로는 완탐으로 코드를 수정했다. 그러자 11번 테스트 케이스를 제외하고는 전부 성공했는데,
보통 한개만 틀리는 경우는 예외처리에 관한 부분이므로 고민했다.
결과적으로는 조금 이해가 가지 않는 부분이었다.
내가 사방 탐색을 위한
static int[] dx = new int[]{1, -1, 0, 0};
static int[] dy = {0, 0, 1, -1};
dx dy를 선언하였는데, 위와 같은 방식으로 선언하게 되면 11번 테스트케이스를 틀렸다고 인식하고, 아래와 같은 방식으로 선언하면 맞았다고 인식했다.
이 두 가지 값 초기화가 아무런 차이가 없다고 알고 있는데, 이유가 굉장히 궁금했다. 혹은 내가 잘못 알고 있는것일까 열심히 탐색해보았지만, 찾을 수 없었다.
조금 더 공부해보고 알아볼까한다.