첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 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);
}
2021-01-08