[프로그래머스]다트게임

해피데빙·2022년 6월 25일
0

코딩테스트

목록 보기
24/52
post-custom-banner
  1. 정규표현식에서부터 length를 설정해줘서 match로 1차적 split을 시킴
  2. 1을 for문으로 돌면서 하나하나 정규표현식으로 split을 시킨다
  3. 하나하나
function solution(dartResult) {
  const regex = /\d{1,2}[SDT]{1}[*|#]?/g;
    //\d: 숫자, {}: 갯수, []:종류, {}:갯수, []:종류, ?:있거나 없거나, g:global
   
  let result = [];
  for (const dart of dartResult.match(regex)) { 
      //여기서부터 split을 시킴
      
    const game = [...dart.split(/([SDT]{1})/)];// SDT중의 값으로 1개씩 
    console.log(game)
      
    const score = game[0];//숫자
      
    let bonus = 1;
    let option = 1;
    if (game[1] === "S") bonus = 1;
    if (game[1] === "D") bonus = 2;
    if (game[1] === "T") bonus = 3;

    if (game[2] === "*") {
      if (result.length !== 0) result[result.length - 1] *= 2;
        //이미 값이 있으면 마지막 값에 2를 곱하고 
      option = 2;
    }
    if (game[2] === "#") option = -1; 

    result.push(score ** bonus * option); // 값 , 지수, 옵션
  }

  return result.reduce((a, b) => a + b);
}
profile
노션 : https://garrulous-gander-3f2.notion.site/c488d337791c4c4cb6d93cb9fcc26f17
post-custom-banner

0개의 댓글