๐Ÿ“ ๊ฐœ๋ฐœ

[BOJ] 2503_์ˆซ์ž์•ผ๊ตฌ


2503๋ฒˆ: ์ˆซ์ž ์•ผ๊ตฌ

์ด๊ฒŒ ์‹ค๋ฒ„ 3 ๋‚œ์ด๋„๋ผ๊ณ ???
์‹ฌ์ง€์–ด ์•„๋ž˜ ์ถœ์ฒ˜๋ฅผ ๋ณด๋‹ˆ ์ดˆ๋“ฑ๋ถ€ ์ •๋ณด ์˜ฌ๋ฆผํ”ผ์•„๋“œ ๋ฌธ์ œ!!
ํ•œ๋™์•ˆ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 1๋ ˆ๋ฒจ ์ •๋„ ๋‚œ์ด๋„์˜ ๋ฌธ์ œ๋งŒ ํ’€๋ฉด์„œ ์ž์‹ ๊ฐ์ด ๋ถ™์—ˆ๋Š”๋ฐ ์ด ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์ถฉ๊ฒฉ๋ฐ›์•˜๋‹ค.
1์‹œ๊ฐ„ 30๋ถ„์ •๋„ ๋„์ „ํ•ด๋ณธ ํ›„ ์‹คํŒจํ•˜๊ณ  ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๊ณ  ํ’€์—ˆ๋‹ค,,ํ‘ํ‘

๋‚˜์˜ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

๋‹ต๋ณ€์ด ๋  ์ˆ˜ ์žˆ๋Š” (strike, ball)์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ ๋งˆ๋‹ค ์กฐ๊ฑด๋ฌธ์„ ๋งŒ๋“ค์–ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

0   0
0   1
0   2
1   0
1   1
1   2
2   0
  1. strike์™€ ball ์ด ๋ชจ๋‘ 0์ธ ๊ฒฝ์šฐ ์ด ๋•Œ ๋ฌผ์–ด๋ณธ ์ˆ˜์— ํฌํ•จ๋œ ์ˆซ์ž๋Š” ์ ˆ๋Œ€ ๋‹ต์— ์˜ฌ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ธฐ๋กํ•ด๋‘”๋‹ค.
  2. strike = 0, ball = 1์ธ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ž๋ฆฌ๊ฐ€ ball number์ผ ๋•Œ, ๋‘ ๋ฒˆ์งธ ์ž๋ฆฌ๊ฐ€ ball number์ผ ๋•Œ, ์„ธ ๋ฒˆ์งธ ์ž๋ฆฌ๊ฐ€ ball number์ผ ๋•Œ์˜ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ„๊ณ , ๋‚˜๋จธ์ง€ ์ž๋ฆฌ์—๋Š” 1๋ถ€ํ„ฐ 9๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ๋Œ€์ž…ํ•˜๋Š”๋ฐ, ์ด ๋•Œ ์ค‘๋ณต๋œ ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๊ฒŒ ํ•˜๊ณ  1๋ฒˆ์—์„œ ํ•„ํ„ฐ๋งํ•œ ์ˆ˜๋Š” ๋‚˜์˜ค์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ๊ฐ ๊ฒฝ์šฐ๋งˆ๋‹ค ๊ฐ€๋Šฅํ•œ ์ˆ˜๋ฅผ ๊ตฌํ•ด์ค€๋‹ค์Œ์— set ์— ๋„ฃ์–ด์ค€๋‹ค. ํ•˜์ง€๋งŒ ์ด ํ’€์ด์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๋‹ต๋ณ€์„ ํ†ตํ•ด์„œ๋งŒ ์ •๋‹ต์„ ์œ ์ถ”ํ•˜๊ณ , ๋‹ต๋ณ€๋“ค๊ณผ์˜ ๊ด€๊ณ„์—์„œ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•œ๋‹ค.

ํ†ต๊ณผํ•œ ํ’€์ด ์•„์ด๋””์–ด

์ •๋‹ต์ด ๋  ์ˆ˜ ์žˆ๋Š” ์ˆ˜ ๋ผ๋ฉด ์งˆ๋ฌธ์œผ๋กœ ์ฃผ์–ด์กŒ๋˜ ์ˆ˜๋“ค์˜ strike, ball ๊ฐฏ์ˆ˜์˜ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 3์ž๋ฆฌ ์ˆ˜ ์ค‘ ๋ชจ๋“  ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋ฉด์„œ 1~9๊ฐ€ ํฌํ•จ๋œ ์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ๋ฐฐ์—ด์˜ ๊ฐ ๊ฐ’์ด ์งˆ๋ฌธ์— ๋‚˜์˜จ ๋ชจ๋“  ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹คโ€ฆ.

์ •๋‹ต ์ฝ”๋“œ

const fs = require("fs");
const filePath = process.platform === "linux" ? '/dev/stdin' : '../input.txt';
let input = fs.readFileSync(filePath).toString().split('\n').slice(0,-1);
 
let [n, ...list] = input;
let arr = [];
 
for(let i = 1; i < 10; i++){
    for(let j = 1; j <10; j++){
        for(let k = 1; k < 10; k++){
            if(i !== j && j !== k && i!==k){
                arr.push(`${i}${j}${k}`);
            }
        }
    }
}
 
let cnt = 0;
 
for (let num of arr){
    let isAvailable = false;
    for(let item of list) {
        let [s, b] = [0, 0];
        let [question, strike, ball] = item.split(' ');
 
        for (let i = 0; i < 3; i++){
            if(question[i] === num[i]){
                s++;
            }else{
                if(num.includes(question[i])){
                    b++;
                }
            }
        }
        if(s=== +strike && b=== +ball){
            isAvailable = true;
        }else{
            isAvailable = false;
            break;
        }
 
    }
    cnt += isAvailable ? 1:0;
}
 
console.log(cnt)
[BOJ] 2503_์ˆซ์ž์•ผ๊ตฌ