https://www.acmicpc.net/problem/2578
빙고가 되기 위해선 5행, 5열, 두 대각선 중에서 3줄이 지워져야 합니다.
let rBingo = Array(5).fill(0);
let cBingo = Array(5).fill(0);
let ascBingo = 0;
let dscBingo = 0;
변수명을 대충 지어서 코드는 숨기고 싶었지만.. 아무튼 위와 같이 설정하고, 빙고판에서 (r, c)에 위치한 값이 지워진다고 할 때 아래 코드와 같이 해당 좌표가 속한 각각의 줄에 1을 더합니다. 대각선 위에도 위치한다면 ascBingo(/)와 dscBingo()에도 1을 더하겠죠? 이렇게 5가 된 줄은 한줄 전체가 지워진 것을 의미합니다.
rBingo[r] += 1
cBingo[c] += 1
if (r === board.length - c - 1) {
ascBingo += 1;
}
if (r === c) {
dscBingo += 1;
}
구현상의 문제는 없었습니다. 그러나
최종 답안과 관련한 변수가 지역변수로 선언되어 있었고
(공교롭게도 예제는 통과가 됐던..)
처음 입력에서 trim()함수로 입력 전체의 맨 끝 공백은 제거했지만
14 12 5 11 13
9 4 3 8 25
18 15 19 24 20
1 6 7 23 17
22 16 10 2 21
17 11 9 24 6
23 1 2 15 12
8 14 21 10 16
3 22 18 13 25
4 5 19 7 20
위와 같이 입력되었을 때
줄 끝에 공백이 있다면 제거되지 않은 상태에서 split(' ')을 써서 공백까지 인식했던 겁니다. 이건 줄 단위로 trim()함수를 추가해주면 됩니다.