Back to all posts
[1차] 다트 게임
Written by ppotatoG & Posted on November 18th, 2021
제출한 답
빈 배열 answer
str
에 10이 있다면, A
로 바꿔줌
str
돌며 숫자들 answer
에 추가
D
, T
일 때 각각 제곱, 세제곱
보너스에 *
이 있다면, answer[answer.length - 2]
값이 있다면, 각 값 추가
보너스에 #
이 있다면, -1 곱해주기
answer
을 모두 더한 값 반환
function solution(str) {let answer = [];str = str.replace(/10/g, 'A')for(let i = 0; i < str.length; i++){if(str[i].match(/[0-9]/) !== null) answer.push(Number(str[i]));if(str[i].match(/A/) !== null) answer.push(10);if(str[i] === 'D') answer[answer.length - 1] **= 2if(str[i] === 'T') answer[answer.length - 1] **= 3if(str[i] === '*') {answer[answer.length - 1] *= 2if(answer[answer.length - 2] !== undefined){answer[answer.length - 2] *= 2}}if(str[i] === '#') {answer[answer.length - 1] *= -1}}return answer.reduce((a, b) => a + b);}
?
이건 내가 리팩토링 한건지 잘 모르겠는데 프로그래머스 들어가니 있었다
사실 위랑 같은 내용인데, for
대신 map
사용
for
문 사용한게 처리속도는 더 빠르다!
function solution(str) {let answer = [];str = str.replace(/10/g, 'A').split('').map((cur) => {if(cur.match(/[0-9]/) !== null) answer.push(Number(cur));if(cur.match(/A/) !== null) answer.push(10);if(cur === 'D') answer[answer.length - 1] **= 2;if(cur === 'T') answer[answer.length - 1] **= 3;if(cur === '*') {answer[answer.length - 1] *= 2;if(answer[answer.length - 2] !== undefined){answer[answer.length - 2] *= 2;}}if(cur === '#') answer[answer.length - 1] *= -1;});return answer.reduce((a, b) => a + b);}