본문 바로가기
알고리즘/프로그래머스

혼자서 하는 틱택토

by 1.5볼트 2023. 5. 12.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/160585

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

어디선가 들어본 틱 택 토 게임

일단 조건이
1 x 가 o 보다 많으면 안 된다
2 o는 x+1 개보다 많으면 안 된다
3 x는 무조건 한 줄만 생겨야 한다
4 o는 1줄과 2줄 가능하지만 2줄일 때는 o는 5 개 x는 4개여야 한다

이 조건들을 조합해서 가능한 경우를 만들어준다

가능하면 1 불가능하면 0

 

def solution(t):
    def f(x):
        y=0
        s1=0
        s2=0

        for i in range(3):
            if t[i].count(x)==3:
                y+=1
            s=0
            for j in range(3):
                if t[j][i]==x:
                    s+=1
            if s==3:
                y+=1

            if t[i][i]==x:
                s1+=1

            if t[i][2-i]==x:
                s2+=1

        if s1==3:
            y+=1
        if s2==3:
            y+=1

        return y

    def xf(x):
        s=0
        for i in range(3):
            s+=t[i].count(x)
        return s


    if f("O")!=0:
        if f("O")>2 or f("X")!=0 or xf("O")<=xf("X") or xf("O")>xf("X")+1:
            return 0
        if f("O")==2:
            if xf("O")==5 and xf("X")==4:
                return 1
            else:
                return 0
        return 1

    elif f("X")!=0:
        if f("X")>1 or xf("O")!=xf("X"):
            return 0
        return 1

    else:
        if xf("O")<xf("X") or xf("O")>xf("X")+1:
            return 0
        
        return 1

'알고리즘 > 프로그래머스' 카테고리의 다른 글

수식 최대화  (1) 2023.05.17
조건에 부합하는 중고거래 상태 조회하기  (0) 2023.05.13
베스트앨범 - python  (0) 2023.04.18
요격 시스템 - python  (0) 2023.04.17
두 원 사이의 정수 쌍 - python  (0) 2023.04.16

댓글