[1차] 다트 게임

김현민·2021년 9월 15일
0

Algorithm

목록 보기
82/126
post-thumbnail

내 코드

function solution(input) {
  var answer = 0

  const filteredNum = input.split(/[0-9]/)
  const filteredChar = input.split(/[A-Z*#]/)
  const numbers = filteredChar.filter((v) => v !== "")
  const chars = filteredNum.filter((v) => v !== "")

  let res = []
  let num = 0
  
  for (let i = 0; i < chars.length; i++) {
    
    const number = numbers[i]
    
    // 제곱수를 구하는 부분
    if (chars[i].includes("S")) {
      num = Math.pow(number, 1)
    } else if (chars[i].includes("D")) {
      num = Math.pow(number, 2)
    } else if (chars[i].includes("T")) {
      num = Math.pow(number, 3)
    }
    
    if (chars[i].includes("#")) {
      num *= -1
    } else if (chars[i].includes("*")) {
      
      // 1차시도에 *이 있을 경우
      if (i === 0) {
        num *= 2
      } else {
        // 1차시도 외에 *이 있을 경우
        num *= 2
        res[i - 1] = res[i - 1] * 2
      }
    }
    res.push(num)
  }
  
  const tt2 = res.reduce((acc, cur) => (acc += cur))
  answer = tt2

  return answer
}

solution("1D2S#10S")
// solution("1D2S0T")
// solution("1S*2T*3S")
// solution("1D#2S*3S")
// solution("1T2D3D#")
// solution("1D2S3T*")
  1. 주어진 문자열을 숫자기준, 문자기준으로 각각 split하고 공백을 제거

  2. 각각의 인덱스값에 알맞은 연산을 해준다.

profile
Jr. FE Dev

0개의 댓글