-
문제
https://www.acmicpc.net/problem/3085
3085번: 사탕 게임
첫째 줄에 상근이가 먹을 수 있는 사탕의 최대 개수를 출력한다.
www.acmicpc.net
How to Solve ?
[1] 단순 구현
function swapRowLocation(candy, row, col) { let tmp = candy[row][col]; candy[row][col] = candy[row + 1][col]; candy[row + 1][col] = tmp; } function swapColLocation(candy, row, col) { let tmp = candy[row][col]; candy[row][col] = candy[row][col + 1]; candy[row][col + 1] = tmp; } function checkPoint(candy) { let cnt = 0; for (let i = 0; i < n; i++) { let cnt_row = 1; let cnt_col = 1; for (let j = 0; j < n - 1; j++) { if (candy[i][j] === candy[i][j + 1]) { cnt_row += 1; } else { cnt = Math.max(cnt, cnt_row); cnt_row = 1; } if (candy[j][i] === candy[j + 1][i]) { cnt_col += 1; } else { cnt = Math.max(cnt, cnt_col); cnt_col = 1; } } cnt = Math.max(cnt, cnt_row, cnt_col); } return cnt; } function solve() { let answer = -Infinity; for (let i = 0; i < n - 1; i++) { for (let j = 0; j < n - 1; j++) { if (candy[i][j] !== candy[i + 1][j]) { swapRowLocation(candy, i, j); answer = Math.max(answer, checkPoint(candy)); swapRowLocation(candy, i, j); } if (candy[i][j] !== candy[i][j + 1]) { swapColLocation(candy, i, j); answer = Math.max(answer, checkPoint(candy)); swapColLocation(candy, i, j); } } } console.log(answer); } const n = 5; const candy = [ ["Y", "C", "P", "Z", "Y"], ["C", "Y", "Z", "Z", "P"], ["C", "C", "P", "P", "P"], ["Y", "C", "Y", "Z", "C"], ["C", "P", "P", "Z", "Z"], ]; solve();
'PS > 백준' 카테고리의 다른 글
[백준_10972] 다음 순열 ( 브루트포스 - 자바스크립트 ) (0) 2021.06.16 [백준_1107] 리모컨 ( 브루트포스 - 자바스크립트 ) (0) 2021.06.15 [백준_1699] 제곱수의 합 ( DP - 자바스크립트 ) (0) 2021.06.15 [백준_15650] N과 M (2) [ 백트래킹 - 자바스크립트 ] (0) 2021.06.14 [백준_17298] 오큰수 ( 스택 - 자바스크립트 ) (1) 2021.06.14 댓글