[1차] 다트게임 2018 KAKAO BLIND RECRUITMENT

YoungjunKim·2022년 9월 28일
0

Algorithm

목록 보기
4/8
post-thumbnail

문제

예시


해결한 코드

function solution(dartResult) {
  var answer = 0;
  let gameCount = 3;
  let resultNum = 0;
  const oneR = /[0-9]/gi;
  const twoR = /[SDT]/g;
    let oneTemp =[];
  let one = dartResult.match(oneR);
 
  let two = dartResult.match(twoR);
  if (one.length >= 4) {
    for (let i = 0; i < one.length; i++) {
      if (one[i] == "1" && one[i + 1] == "0") {
        one[i] = 10;
      }
    }
  }

    let tempOne = one.filter(function(item,index){
        if (item!=0){
            oneTemp.push(item);
        }else if ( item ==0 && one[index-1] != 10){
            oneTemp.push(item);
            
        }
    })
    
  for (let i = 0; i < two.length; i++) {
    if (two[i] == "D") {
      oneTemp[i] = Math.pow(oneTemp[i], 2);
    } else if (two[i] == "T") {
      oneTemp[i] = Math.pow(oneTemp[i], 3);
    }
  }

  for (let i = 0; i < dartResult.length; i++) {
    if (dartResult[i] == "*") {
    
      if (i == 2) {
        oneTemp[0] *= 2;
      } else if (i == 5 || i == 4) {
        oneTemp[0] *= 2;
        oneTemp[1] *= 2;
      } else {
        oneTemp[1] *= 2;
        oneTemp[2] *= 2;
      }
    } else if (dartResult[i] == "#") {
      if (i == 2) {
        oneTemp[0] *= -1;
      } else if (i == 5 || i == 4) {
        oneTemp[1] *= -1;
      } else {
        oneTemp[2] *= -1;
      }
    }
  }

  for (let i = 0; i < oneTemp.length; i++) {
    resultNum += parseInt(oneTemp[i]);
  }

 
  return resultNum;

해석
const oneR = /[0-9]/gi; //숫자를 뽑아내 배열을 만든다
const twoR = /[SDT]/g; // SDT를 뽑아내 배열을 만든다
let one = dartResult.match(oneR);
let two = dartResult.match(twoR);

if (one.length >= 4) { //10의경우 숫자배열이 4칸이상이 된다.
for (let i = 0; i < one.length; i++) {
if (one[i] == "1" && one[i + 1] == "0") {
one[i] = 10;
}
}
}

for (let i = 0; i < two.length; i++) { //Double, Triple의 처리
if (two[i] == "D") {
oneTemp[i] = Math.pow(oneTemp[i], 2);
} else if (two[i] == "T") {
oneTemp[i] = Math.pow(oneTemp[i], 3);
}
}

for (let i = 0; i < dartResult.length; i++) { // 별과 샵의 처리
if (dartResult[i] == "*") { if (i == 2) {
oneTemp[0]
= 2;
} else if (i == 5 || i == 4) {
oneTemp[0] = 2;
oneTemp[1]
= 2;
} else {
oneTemp[1] = 2;
oneTemp[2]
= 2;
}
} else if (dartResult[i] == "#") {
if (i == 2) {
oneTemp[0] = -1;
} else if (i == 5 || i == 4) {
oneTemp[1]
= -1;
} else {
oneTemp[2] *= -1;
}
}}

profile
개발신입

0개의 댓글