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 | 29 | 30 | 31 |
Tags
- 프로그래머스 K_Digital Training 프론트엔드
- react customHook 예시
- 리팩토링 회고
- 인프런 자바스크립트 알고리즘 문제풀이
- 모던 자바스크립트 Deep Dive TIL
- 프로그래머스 데브코스 프론트엔드 TIL
- KDT 프로그래머스
- 백준 js
- TypeScript 문법 소개
- 모던 javascript Deep Dive
- 개발자 특강
- react 프로젝트 리팩토링
- 투포인터알고리즘 js
- 머쓱이
- Vue3 Router
- Frontend Roadmap
- 모던 자바스크립트 TIL
- 프로그래머스 데브코스 프론트엔드
- Vue3
- frontend roadmap study
- useRef 지역 변수
- 백준 node.js
- 모던 자바스크립트 딥다이브
- 프로그래머스 데브코스
- 우테캠 회고록
- useEffect return
- 모던 자바스크립트 Deep Dive
- K_Digital Training
- KDT 프로그래머스 데브코스 프론트엔드
- 프로그래머스 K_Digital Training
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
[백준 node.js] 10773번_제로 본문
백준 문자열 알고리즘 10773번_제로
난이도 : 실버IV
문제 설명
입출력
문제 풀이 : input값 순서대로 계산을 해주다가 0이 나오면 마지막에 불렀던 숫자를 빼주면된다.
0이 여러개 나오게 되면 마지막에 불렀던 순으로 올라가면서 값을 빼줘야한다.
즉 마지막에 불렸던 숫자를 빼야하는데 이는 스택을 활용하면 쉽게 구현할 수 있다.
반복문을 통해 값을 체크한뒤 0이 아니라면 스택에 넣어주고 합산을 해주고
0이라면 스택에서 마지막 값을 빼주면된다.
//실버4 제로
const solution = (n) => {
let sum = 0; //총합
let tmp = []; //스택으로 활용
for (let i = 0; i < n; i++) {
//불러주는 수가 0이 아니라면
//스택에 넣고 총합계산
if (input[i]) {
tmp.push(input[i]);
sum += input[i];
} else {
//0이라면 계산을 잘못한거기 때문에
//제일 마지막에 불렀던 숫자를 빼줘야하기 떄문에
//pop() 이용
sum -= tmp.pop();
}
}
console.log(sum);
};
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on("line", function (line) {
//여러줄 입력
input.push(line);
}).on("close", function () {
//input값 형변환
input = input.map((el) => Number(el));
let n = input.shift();
solution(n);
process.exit();
});
* 매우 간단해 보이지만 이정도 수준의 문제가 코딩테스트 1번 문제정도로 나오는 경우가 있다. 몸풀기 용으로 풀어두면 좋을 것 같다.
728x90
Comments