티스토리 뷰

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

 

17281번: ⚾

⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종

www.acmicpc.net

const input = require('fs').readFileSync('./dev/stdin').toString().trim().split('\n');
const N = +input.shift();
const ainta = input.map((v) => v.split(' ').map(Number));

const order = [];
for (let i = 1; i <= 8; i++) {
        let q = [[i]];
        while (q.length > 0) {
                let now = q.shift();
                if (now.length == 8) {
                        order.push([...now.splice(5), 0, ...now]);
                } else {
                        for (let j = 1; j <= 8; j++) {
                                if (!now.includes(j)) q.push([...now, j]);
                        }
                }
        }
}

let max = 0;
order.forEach((o) => {
        let innings = 0;
        let score = 0;
        let player = 0;
        while (innings < N) {
                let out = 0;
                let base1 = false;
                let base2 = false;
                let base3 = false;

                while (out < 3) {
                        const hitresult = ainta[innings][o[player]];

                        switch (hitresult) {
                                case 0:
                                        out++;
                                        break;
                                case 1:
                                        if (base3) {
                                                base3 = false;
                                                score++;
                                        }

                                        if (base2) {
                                                base2 = false;
                                                base3 = true;
                                        }
                                        if (base1) {
                                                base1 = false;
                                                base2 = true;
                                        }
                                        base1 = true;
                                        break;
                                case 2:
                                        if (base3) {
                                                base3 = false;
                                                score++;
                                        }

                                        if (base2) {
                                                base2 = false;
                                                score++;
                                        }
                                        if (base1) {
                                                base3 = true;
                                                base1 = false;
                                        }
                                        base2 = true;
                                        break;
                                case 3:
                                        if (base3) {
                                                base3 = false;
                                                score++;
                                        }

                                        if (base2) {
                                                base2 = false;
                                                score++;
                                        }
                                        if (base1) {
                                                base1 = false;
                                                score++;
                                        }
                                        base3 = true;
                                        break;
                                case 4:
                                        if (base3) {
                                                score++;
                                        }

                                        if (base2) {
                                                score++;
                                        }
                                        if (base1) {
                                                score++;
                                        }
                                        score++;
                                        base1 = false;
                                        base2 = false;
                                        base3 = false;
                                        break;
                        }
                        player++;
                        if (player == 9) player = 0;
                }
                innings++;
        }
        max = Math.max(max, score);
});

console.log(max);
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함