less than 1 minute read

3085 사탕 게임 / c++ / Silver2 / 40분

문제 및 코드

접근 방식

브루트 포스 / 구현

  1. 인접한 4칸 중 색이 다른 칸을 찾기 (왼쪽위에서 우하향으로 내려오기 때문에 오른쪽, 아래만 검사하면 됨)
  2. 서로 색을 바꾸기
  3. 바꾼 칸 두 칸을 기준으로 4방향으로 뻗었을 때, 가장 긴 수를 반환
  4. 최대값 갱신
  5. 순회가 끝나면 최대값 출력

-> 내가 바꾸지 않은 부분에서 최대값이 나오는 경우를 탐지하지 못했다. (에제 2번)

그래서 1번 전에 우선 현재 칸 기준으로 최대값을 한번 찾는 로직을 추가했다.
-> 해결

다시 생각해 볼 점

  1. 코딩을 시작하기 전에 문제를 한번 분석하고 수도 코드를 작성하고 풀었더니 훨씬 쉽게 풀렸다.
  2. 내가 바꾸지 않은 부분에서 최대값이 나올 수 있다는 것을 알았을 때, 처음엔 바꿀 때마다 전체 보드를 다 탐색해야 하나 생각했다.
  3. 하지만 너무 비효율적이었고, 다른 방법을 찾던 중, 결국 내가 바꿨다면 변화가 거기에서만 오기때문에 그 부분만 찾는게 맞고, 아니라면 바꾸기 전 상태를 먼저 체크하면 되는게 아닌가 생각이 들었다.
  4. 생각한대로 수정하고 문제를 해결하게 되어 엄청 뿌듯했다.