백준2578 / 빙고 / JS

Jihoo·2021년 9월 10일
0

Algorithm

목록 보기
14/16

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;
}

그리고 틀렸다

구현상의 문제는 없었습니다. 그러나

  1. 최종 답안과 관련한 변수가 지역변수로 선언되어 있었고
    (공교롭게도 예제는 통과가 됐던..)

  2. 처음 입력에서 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()함수를 추가해주면 됩니다.

0개의 댓글