TIL 7일차

홍인열·2021년 8월 29일
0

// 프로그래머스
// 코딩테스트 연습
// 2018 KAKAO BLIND RECRUITMENT
// [1차] 다트 게임
문제를 오늘 이어서 풀었다.
90/100 점으로 통과하지 못했다.

코드를 다시 짜기 시작했다.
코드 짜는 방향을 변경시켜 문자열을 특성 숫자 배열로 새로 변환시켰다.

let scoreArary = [];
if (dartResultArray[i + 1] === 'S') {
  scoreArray.push(1);
} else if (dartResultArray[i + 1] === 'D') {
  scoreArray.push(2);
} else if (dartResultArray[i + 1] === 'T') {
  scoreArray.push(3);
}

이런 방식으로 인수로 들어온 문자열을 숫자배열로 봐꾸어 계산하기 쉽도록 하였다.

그리고 각 점수배열의 3번제 옵션항목에따라 조건문으로 점수를 계산했다.

firstScore = Math.pow(scoreArray[0], scoreArray[1]) * scoreArray[2];
if (scoreArray[5] === 2) {
  firstScore = Math.pow(scoreArray[0], scoreArray[1]) * scoreArray[2] * scoreArray[5];
  secondScore = Math.pow(scoreArray[3], scoreArray[4]) * scoreArray[5];
} else {
  secondScore = Math.pow(scoreArray[3], scoreArray[4]) * scoreArray[5];
}
if (scoreArray[8] === 2) {
  secondScore = Math.pow(scoreArray[3], scoreArray[4]) * scoreArray[5] * scoreArray[8];
  thirdScore = Math.pow(scoreArray[6], scoreArray[7]) * scoreArray[8];
} else {
  thirdScore = Math.pow(scoreArray[6], scoreArray[7]) * scoreArray[8];
}
answer = firstScore + secondScore + thirdScore;

단순하게 코드를 나열하고 각 경우별로 모두 계산식을 달리하였다. 코드가 너무 길어보이지만 지금은 이렇게라도 원하는 결과를 얻어냈다는 것에 만족한다!

문제를 체점하고 다른사람들의 코드를 보았는데 많은걸 느낄수 있었다.
정규 표현식을이용하는 사람들도 많이 보여서, 정규표현식도 내것으로 만들 필요가 있음을 다시한번 느꼇다.

이문제를 해겨할때 저건문에 숫자인경우를 만들었었다

if (Number.isInteger(parseInt(dartResultArray[i]))) 
// 문자열 배열의 인덱스를 parseInt를 이용해 정수로 반환한 후, isInteger를 이용해 boolean값을 얻을수 있었다.
Number.isNaN()
// 을 사용하여도 숫자를 확인후 boolean값을 반환 받을 수 있다.
profile
함께 일하고싶은 개발자

0개의 댓글