3085 사탕 게임
3085 사탕 게임 / c++ / Silver2 / 40분
문제 및 코드
접근 방식
브루트 포스 / 구현
- 인접한 4칸 중 색이 다른 칸을 찾기 (왼쪽위에서 우하향으로 내려오기 때문에 오른쪽, 아래만 검사하면 됨)
- 서로 색을 바꾸기
- 바꾼 칸 두 칸을 기준으로 4방향으로 뻗었을 때, 가장 긴 수를 반환
- 최대값 갱신
- 순회가 끝나면 최대값 출력
-> 내가 바꾸지 않은 부분에서 최대값이 나오는 경우를 탐지하지 못했다. (에제 2번)
그래서 1번 전에 우선 현재 칸 기준으로 최대값을 한번 찾는 로직을 추가했다.
-> 해결
다시 생각해 볼 점
- 코딩을 시작하기 전에 문제를 한번 분석하고 수도 코드를 작성하고 풀었더니 훨씬 쉽게 풀렸다.
- 내가 바꾸지 않은 부분에서 최대값이 나올 수 있다는 것을 알았을 때, 처음엔 바꿀 때마다 전체 보드를 다 탐색해야 하나 생각했다.
- 하지만 너무 비효율적이었고, 다른 방법을 찾던 중, 결국 내가 바꿨다면 변화가 거기에서만 오기때문에 그 부분만 찾는게 맞고, 아니라면 바꾸기 전 상태를 먼저 체크하면 되는게 아닌가 생각이 들었다.
- 생각한대로 수정하고 문제를 해결하게 되어 엄청 뿌듯했다.