| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- next.js
- 프로그래머스
- 패스트캠퍼스
- Github
- TypeScript
- 입문
- 개발자취업부트캠프
- useMemo
- 모던 자바스크립트 딥 다이브
- MegabyteSchool
- 개발 공부
- 리액트
- 프론트엔드
- 자바스크립트
- 코딩테스트
- 공식문서
- useRef
- react
- 자료구조
- 국비지원교육
- 이벤트
- JavaScript
- GIT
- styled-components
- 메가바이트스쿨
- CSS
- 비전공자
- 내일배움카드
- 모던 딥 다이브 자바스크립트
- 알고리즘
Archives
- Today
- Total
개발 기록 남기기✍️
[프로그래머스] 컨트롤 제트 본문
🗒️ 문제 설명
숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
⚠️ 제한 사항
- 1 ≤ s의 길이 ≤ 200
- -1,000 < s의 원소 중 숫자 < 1,000
- s는 숫자, "Z", 공백으로 이루어져 있습니다.
- s에 있는 숫자와 "Z"는 서로 공백으로 구분됩니다.
- 연속된 공백은 주어지지 않습니다.
- 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
- s는 "Z"로 시작하지 않습니다.
- s의 시작과 끝에는 공백이 없습니다.
- "Z"가 연속해서 나오는 경우는 없습니다.
👀 입출력 예
| s | result |
| "1 2 Z 3" | 4 |
| "10 20 30 40" | 100 |
| "10 Z 20 Z 1" | 1 |
| "10 Z 20 Z" | 0 |
| "-1 -2 -3 Z" | -3 |
❇️ 나의 풀이
- 먼저 s를 공백을 기준으로 나눠준 배열로 변환했다.
- 배열을 reduce 함수로 돌면서 acc 값(초기값 0)에 cur 값을 더해줬는데, cur 값이 Z일 때의 조건을 걸어줬다.
- split 처리한 배열의 item은 문자형이기 때문에, 계산하기 전에 숫자형으로 바꿔주고 계산할 것!
- reduce 함수의 옵션 매개변수로는 currentIndex가 있는데, 이를 통해 acc에서 arr[curIdx - 1] 값을 뺐다.
function solution(s) {
var arr = s.split(" ")
var ans = arr.reduce((acc,cur,curIdx) => {
return cur === "Z" ? acc-=Number(arr[curIdx-1]) : acc+=Number(cur);
},0)
return ans
}'코딩 테스트 연습' 카테고리의 다른 글
| [프로그래머스] 연속된 수의 합 (0) | 2022.12.31 |
|---|---|
| [프로그래머스] 영어가 싫어요 (0) | 2022.12.30 |
| [프로그래머스] 최빈값 구하기 (0) | 2022.12.30 |
| [프로그래머스] 직사각형 넓이 구하기 (2) | 2022.12.30 |
| [프로그래머스] 삼각형의 완성조건 (2) (0) | 2022.12.30 |