[Javascript] (백준 2578) 빙고

Chaedie·2022년 6월 22일
0

Javascript - PS

목록 보기
16/24
post-custom-banner

💡 구글에 Javascript 풀이가 많이 없으면, 좋은 풀이 여부에 상관 없이 포스팅합니다.

https://www.acmicpc.net/problem/2578

내 풀이

//* 인풋 - 디폴트
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(filePath).toString().split('\n');

//* 인풋 - 커스텀, 함수 콜
const inputs = input.map((nums) => nums.split(' ').map((num) => Number(num)));
const bingo = inputs.slice(0, 5);
const target = inputs.slice(5, 10);
const n = 5;

let x = [0, 0, 0, 0, 0];
let y = [0, 0, 0, 0, 0];
let xy = [0, 0];

console.log(sol());

/**
 * 1) 빙고를 그린다
 * 2) 숫자를 부르면서 빙고를 지운다.
 * 3) 숫자 부를때마다 빙고가 몇갠지 확인한다.
 * 4) 빙고가 3개가 되면 끝낸다.
 */

//* 로직함수
function sol() {
  let count = 0;

  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      del(target[i][j]);
      count++;
      if (checkBingo()) {
        return count;
      }
    }
  }
}

function checkBingo() {
  let bingoCount = 0;
  for (let i = 0; i < n; i++) {
    if (x[i] === -5) {
      bingoCount++;
      if (bingoCount >= 3) {
        return true;
      }
    }
    if (y[i] === -5) {
      bingoCount++;
      if (bingoCount >= 3) {
        return true;
      }
    }
  }
  for (let i = 0; i < 2; i++) {
    if (xy[i] <= -5) {
      bingoCount++;
      if (bingoCount >= 3) {
        return true;
      }
    }
  }
}

function del(delNum) {
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      if (bingo[i][j] === delNum) {
        bingo[i][j] = -1;
        x[i] += -1;
        y[j] += -1;
        checkXY(i, j);
        return;
      }
    }
  }
}
function checkXY(i, j) {
  for (let a = 0; a < n; a++) {
    if (i === a && j === a) {
      xy[0] += -1;
    }
  }
  for (let b = 0; b < n; b++) {
    if (i === b && j === 4 - b) {
      xy[1] += -1;
    }
  }
}

다른 사람 풀이

Javascript풀이가 많지 않고, 마음에 쏙 드는 풀이가 없어 생략합니다.

배운 점, 느낀 점

종이에 적는게 좋지만, 그럴수 없는 환경도 있을테니 주석에 적어두는 연습을 해야겠다.

profile
TIL Blog - Today's Intensive Learning!
post-custom-banner

0개의 댓글