반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- dp
- 문자열
- HTTP 완벽 가이드
- 그래프
- typescript
- 쉬운 문제
- Crawling
- 알고리즘
- javascript
- 소켓
- 프로그래머스
- 프로그래머스 레벨 2
- type challenge
- ip
- 수학
- 크롤링
- Nestjs
- dfs
- 자바스크립트
- Node.js
- socket
- BFS
- HTTP
- 타입 챌린지
- 레벨 1
- Algorithm
- 타입스크립트
- 가천대
- TCP
Archives
- Today
- Total
kakasoo
[node.js] [1차]다트 게임 ( 프로그래머스 레벨1 ) 본문
반응형
// // 프로그래머스 레벨 1 2018 KAKAO BLIND RECRUITMENT > [1차]다트 게임을 풀었습니다.
let sum = [];
const split = (arr, char) => {
arr = arr
.map((el, i) => {
if (el.indexOf(char) != -1) {
return [
el.substring(0, el.indexOf(char) + 1),
el.substring(el.indexOf(char) + 1, el.length),
];
} else return el;
})
.flat(Infinity)
.filter((el) => !!el);
return arr;
};
const calc = (str) => {
let point = "";
let square, option;
for (let i = 0; i < str.length; i++) {
if (!isNaN(str[i])) point += str[i];
else if (str[i] === "#" || str[i] === "*") option = str[i];
else square = str[i] === "S" ? 1 : str[i] === "D" ? 2 : 3;
}
sum.push(point ** square);
if (option === "*") {
sum[sum.length - 1] *= 2;
sum[sum.length - 2] *= 2;
}
if (option === "#") {
sum[sum.length - 1] *= -1;
}
};
function solution(dartResult) {
let answer = split([dartResult], "*");
answer = split(answer, "*");
answer = split(answer, "#");
answer = split(answer, "#");
answer = split(answer, "D");
answer = split(answer, "D");
answer = split(answer, "T");
answer = split(answer, "T");
answer = split(answer, "S");
answer = split(answer, "S");
answer = answer
.map((el, i) => {
if (answer[i + 1] === "#" || answer[i + 1] === "*") {
el += answer[i + 1];
answer[i + 1] = "";
return el;
}
return el;
})
.filter((el) => !!el);
answer.map((el) => calc(el));
return sum.reduce((acc, cur) => acc + cur);
}
잘 풀었다고는 생각 안하는데 테스트 통과는 해서 올린다.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 프린터 ( 프로그래머스 레벨2 ) (0) | 2021.06.28 |
---|---|
[node.js] 스킬트리 ( 프로그래머스 레벨2 ) (0) | 2021.06.28 |
[node.js] [1차]비밀지도 ( 프로그래머스 레벨1 ) (0) | 2021.06.28 |
[node.js] 실패율 ( 프로그래머스 레벨 1 ) (0) | 2021.06.28 |
[node.js] 예산 ( 프로그래머스 레벨1 ) (0) | 2021.06.28 |