티스토리 뷰

코딩테스트 연습 - [1차] 다트 게임 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

구현문제

 

주의할 점은 10은 두 자리 수란 걸 유념해야 한다.


내 코드

const solution = (dartResultArr) => {
  let answer = 0;
  let dartResult = [];
  dartResultArr = dartResultArr.split('');
  console.log(`dartResultArr : ${dartResultArr}`);
  // 10을 배열에 넣기 위한 for문
  for (let i = 0; i < dartResultArr.length; i++) {
    if (dartResultArr[i] === '1' && dartResultArr[i + 1] === '0') {
      dartResult.push(dartResultArr[i] + dartResultArr[i + 1]);
      i++;
    } else {
      dartResult.push(dartResultArr[i]);
    }
    console.log(`dartResult : ${dartResult}`);
  }
 
  console.log(`dartResult : ${dartResult}`);
  for (let i = 0; i < dartResult.length; i++) {
    console.log(`dartResult[${i}]:${dartResult[i]}`);
    if (dartResult[i] === 'D') {
      dartResult[i - 1] = Math.pow(dartResult[i - 1], 2);
    } else if (dartResult[i] === 'T') {
      dartResult[i - 1] = Math.pow(dartResult[i - 1], 3);
    } else if (dartResult[i] === '#') {
      dartResult[i - 2] = -dartResult[i - 2];
    } else if (dartResult[i] === '*') {
      dartResult[i - 2] = dartResult[i - 2] * 2;
      // 바로 전 것도 곱하기 2 해주자
      for (let idx = i-4; idx >= 0; idx--) {
        if (!Number.isNaN(Number(dartResult[idx]))) {
          dartResult[idx] = dartResult[idx] * 2;
          break;
        }
      }
    }
  }
  console.log(`dartResult:${dartResult}`);

  for (let i = 0; i < dartResult.length; i++) {
    if (!Number.isNaN(Number(dartResult[i]))) answer += Number(dartResult[i]);
  }
  console.log(answer);
  return answer;
};
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함