프로그래머스 - 숫자야구

이윤주·2020년 6월 3일

코딩테스트

목록 보기
10/18

입출력 예

baseballreturn
[[123, 1, 1], [356, 1, 0], [327, 2, 0], [489, 0, 1]]2

function solution(baseball) {
    var answer = 0;
    
    for(let i = 123; i <= 987; i++) {
        let isTrue = true
        i = String(i) 
        
        if(i[0] !== i[1] // 1,2,3자리 수가 서로 중복되지않고 
           && i[0] !== i[2]
           && i[1] !== i[2]
           && i.indexOf('0') === -1) {// 0이 포함안되면 
            
            for(let j = 0; j < baseball.length; j++) {
                let chk = String(baseball[j][0]) // A가 말하는 숫자 
                let strike = 0
                let ball = 0
                
                /* 내가 만든 i의 0,1,2 idx와 baseball[j][0]의 0,1,2 idx가 같으면 strike  
                   내가만든 i의 0 idx가 baseball[j][1] or baseball[j][2]와 같거나
                   내가만든 i의 1 idx가 baseball[j][0] or baseball[j][2]와 같거나 
                   내가만든 i의 2 idx가 baseball[j][0] or baseball[j][1]와 같으면 ball
                   근데 같은게 하나만 나와도 각 idx는 중복되지 않으니 넘어가도 된다.
                */
                
                for(let a = 0; a < 3; a++) {
                    if(i[a] === chk[a]) { // 스트라이크일 때 
                        strike++
                        continue;
                    
                    } else if(i.indexOf(chk[a]) !== -1 && i.indexOf(chk[a]) !== a) { // 볼일때
                        ball++
                        continue;
                    }
                }
         
                if(strike !== baseball[j][1] || ball !== baseball[j][2]) {
                    isTrue = false
                }
            }
            
            if(isTrue === true) {
                answer++
            }
        }
    }
    return answer
}

0개의 댓글