2020년/코테

[코테 연습]숫자 야구

위지원 2020. 4. 26. 18:19

문제 설명

숫자 야구 게임이란 2명이 서로가 생각한 숫자를 맞추는 게임입니다. 게임해보기

각자 서로 다른 1~9까지 3자리 임의의 숫자를 정한 뒤 서로에게 3자리의 숫자를 불러서 결과를 확인합니다. 그리고 그 결과를 토대로 상대가 정한 숫자를 예상한 뒤 맞힙니다.

 

* 숫자는 맞지만, 위치가 틀렸을 때는 볼

* 숫자와 위치가 모두 맞을 때는 스트라이크

* 숫자와 위치가 모두 틀렸을 때는 아웃

def check(number, allNum):
    qNum     = str(number[0])
    qStrike  = number[1]
    qBalls   = number[2]
    candiArr = []
    
    for n in allNum:
        strikes, balls = (0,0)
        for j in range(3):
            if qNum[j] == n[j]:
                strikes += 1
            elif qNum[j] in n:
                balls += 1
        if (strikes, balls) == (qStrike, qBalls):
            candiArr.append(n)
            
    return candiArr
    

    
def solution(baseball):
    rNum   = [str(x) for x in range(1,10)]
    canNum = [
        rNum[x]+rNum[y]+rNum[z]
        for x in range(9)
        for y in range(9)
        for z in range(9)
        if x!=y and y!=z and z!=x
    ]
    for qusition in baseball:
        canNum = check(qusition, canNum)
        
    answer = len(canNum)
    return answer

이번 문제는 갈피도 못 잡겠어서 결국 다른 풀이의 도움을 얻어 해결했다. 

WOW 해결방법은 간단했다.. 그냥 모든 수를 다 생성해서 후보군을 제거하는 방법이였다.

하지만 난 그런것도 생각못하는 바보멍챙 ㅠㅠ 코테를 하루에 100개씩은 풀어야 초보자 타이틀이라도 달려나..(한숨)