문제풀이/구현

[파이썬] [구현] 백준 17281 야구

승무_ 2023. 4. 10. 20:11

문제

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

 

17281번: ⚾

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

www.acmicpc.net

코드

from itertools import permutations

n=int(input())
array=[list(map(int, input().split())) for _ in range(n)]

seq=list(permutations(range(1,9)))

answer=0
for i in seq:
    result=0
    # temp -> 타자 순서
    temp=list(i)
    # 1번 선수 4번 타자로
    temp.insert(3,0)

    nowPlayer=0
    for j in range(n):
        outCount = 0
        b1,b2,b3=0,0,0
        while 1:
            if outCount>2:
                break
            # 아웃
            if array[j][temp[nowPlayer]]==0:
                outCount+=1
            elif array[j][temp[nowPlayer]] == 1:
                result+=b3
                b1,b2,b3=1,b1,b2
            elif array[j][temp[nowPlayer]] == 2:
                result+=(b2+b3)
                b1,b2,b3=0,1,b1
            elif array[j][temp[nowPlayer]] == 3:
                result+=(b1+b2+b3)
                b1,b2,b3=0,0,1
            else:
                result+=(b1+b2+b3+1)
                b1,b2,b3=0,0,0
            nowPlayer+=1
            nowPlayer%=9
    answer=max(answer,result)
print(answer)