• [코테 연습]숫자 야구

    2020. 4. 26. 18:19

    by. 위지원

    문제 설명

    숫자 야구 게임이란 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개씩은 풀어야 초보자 타이틀이라도 달려나..(한숨)

    '2020년 > 코테' 카테고리의 다른 글

    [코테 연습] 1로 만들기  (0) 2020.04.28
    [코테 연습] 카펫  (0) 2020.04.26
    [코테 연습] 모의고사 python  (0) 2020.04.22
    [코테 연습] H-Index Python  (0) 2020.04.21
    [코테 연습] 가장 큰 수 python  (0) 2020.04.20