프로그래머스 - 숫자 야구 (javascript)

김태은·2020년 1월 17일
0

문제풀이

목록 보기
7/12
// 중복되거나 0인 수는 세지 않는다!
function solution(baseball) {
  var answer = []

  // 123~987 완전 탐색
  for (var i = 123; i <= 987; i++) {
    const number = String(i)
    if (
      number.charAt(0) == number.charAt(1) ||
      number.charAt(1) == number.charAt(2) ||
      number.charAt(2) == number.charAt(0) ||
      number.indexOf('0') > 0
    )
      continue

    // check가 true로 남아있으면 모든 조건을 만족하는 것
    var check = true
    
    // baseball 배열의 조건 모두 탐색
    for (var j = 0; j < baseball.length; j++) {
      var countStrike = 0
      // 현재 baseball 배열의 숫자의 모든 자릿수 비교 (strike)
      for (var k = 0; k < 3; k++) {
        if (number.charAt(k) === String(baseball[j][0]).charAt(k)) countStrike++
      }

      if (countStrike !== baseball[j][1]) {
        check = false
        break
      }
        
      var countBall = 0
      // 현재 baseball 배열의 숫자의 모든 자릿수 비교 (ball)
      for (var k = 0; k < 3; k++) {
        if (number.indexOf(String(baseball[j][0]).charAt(k)) >= 0) countBall++
      }

      // 위의 조건에서 중복되는 strike의 수를 빼줘야함.  
      if (countBall - countStrike !== baseball[j][2]) {
        check = false
        break
      }
    }
    if (check) answer.push(i)
  }

  return answer.length
}
profile
프론트엔드 개발 공부블로그

0개의 댓글