[백준/node.js] 2503번: 숫자 야구

heeyun·2021년 1월 8일
0

Baekjoon Online Judge

목록 보기
1/9
post-thumbnail

문제

2503번: 숫자 야구


입력

첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트라이크 개수를 나타내는 정수와 볼의 개수를 나타내는 정수, 이렇게 총 세 개의 정수가 빈칸을 사이에 두고 주어진다.


출력

첫 줄에 영수가 생각하고 있을 가능성이 있는 답의 총 개수를 출력한다.


예제 입력

4
123 1 1
356 1 0
327 2 0
489 0 1


예제 출력

2


풀이

'use strict';

const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');

function check(num){
  let s, b;
  let tmp, cmpNum;

  for (let i = 1; i < Number(input[0]) + 1; ++i){
    s = 0;
    b = 0;
    tmp = input[i].split(' ');
    cmpNum = tmp[0]

    for (let x = 0; x < 3; x++){
      for (let y = 0; y < 3; y++){
        // strike
        if (x == y && cmpNum[x] == num[y])
          s++;
        //ball
        if (x != y && cmpNum[x] == num[y])
          b++;
      }
    }

    // strike 수, ball 수가 입력 값과 다르면 false 반환
    if (s != tmp[1] || b != tmp[2])
      return false;
  }
  return true;
}

{
  let num = '';
  let ans = 0;

  for (let i = 123; i<= 999; ++i){
    num = String(i);

    // 중복된 숫자 제외
    if (num[0] == num[1] || num[0] == num[2] || num[1] == num[2])
      continue;

    // 0 제외
    if (num[0] == '0' || num[1] == '0' || num[2] == '0')
      continue;
  
    if (check(num))
      ans++;
  }

  console.log(ans);
}

채점

2503


  • 제출하기 전
    const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
    대신
    const input = ['4', '123 1 1', '356 1 0', '327 2 0', '489 0 1'];
    를 사용해서 테스트 했습니다.

2021-01-08

profile
파이팅

0개의 댓글