백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 5397 , 키로거 [자료구조, 스택]
Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하
<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
<덧붙일 말>
실수하기 좋으니 반례를 확인하자.
문제 출처
https://www.acmicpc.net/problem/5397
요구사항📋
1. 문자가 나오면 저장한다.
2. 방향키 '<' || '>' 가 나오면 방향키가 나온 방향과 횟수에 맞춰서 다음 문자가 입력될 위치로 이동한다.
3. '-' 가 입력되면 현재의 위치의 왼쪽값을 지운다.
4. 모든 처리를 진행한 뒤 남은 문자를 출력하라.
해결 전략 📝
우선 방향키에 따라 위치를 이동시켜서 다음 문자를 저장해야하는데 이걸 어떻게 처리할지가 관건이였다.
방향키가 왼쪽으로 이동하면 한칸씩 떼어내서 다른 공간에 저장해 두었다가 오른쪽 방향키가 나오면 다시 붙이는 식으로 하면 되겠다라는 생각이 들었다.
그래서 빈 배열을 두개 선언하고 한 곳은 문자를 저장해 나아가면서 현재의 위치를 파악할 공간과 다른 한 곳은 방향키에 따라 문자를 따라 떼어냈다가 다시 꺼내 붙였다가 할 공간을 만들어주었다.
이제 입력된 문자들을 하나씩 처리한다.
if 문을 통해 방향키에 따라 pop할 배열을 설정해주고 pop한 문자는 반대 쪽 배열에 붙여주는 연산을 한다.
이때, 백스페이스 역할인 '-' 이 나오면 그냥 pop만 해버려서 삭제시킨다.
마지막에는 각각 배열에 값이 나눠져서 들어가 있을 수 있으므로 두 배열을 같이 붙여서 출력해야함을 잊지 말아야한다.
특히, 문자를 떼어내어 저장했던 공간은 먼저 떼어내진 문자가 오른쪽 끝값으로 와야한다.
그러므로 이 배열만 reverse 해서 붙여줘야한다.
반례 ⚠️
백준 기본 테스트 케이스만 가지고 확인하면 놓칠 부분들이 있으니 해당 코드들도 잘 돌아가는지 확인해보자.
입력 : A<B<C<D<E
출력 : EDCBA
입력 : j><>-<u->xb<<a
출력 : axb
정답
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n")
.map((v) => v.trim());
const [T, ...Pwds] = input;
function solution(T, Pwds) {
Pwds.map((pwd) => {
let [answer, tmp] = [[], []];
pwd.split("").map((v) => {
if (v === "<") {
if (answer.length !== 0) tmp.push(answer.pop());
} else if (v === ">") {
if (tmp.length !== 0) answer.push(tmp.pop());
} else if (v === "-") {
answer.pop();
} else {
answer.push(v);
}
});
console.log([...answer, ...tmp.reverse()].join(""));
});
}
solution(T, Pwds);
solution(T, Pwds);
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Gold 4 문제 , 백준 Node.js 자바스크립트 9935, 문자열 폭발 [자료구조, 스택] (0) | 2022.10.19 |
---|---|
백준/ Gold 2 문제 , 백준 Node.js 자바스크립트 1918 , 후위 표기식[자료구조, 스택] (0) | 2022.10.19 |
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 3986 , 좋은 단어 [자료구조, 스택] (0) | 2022.10.14 |
백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 1935 , 후위 표기식2 [자료구조, 스택] (0) | 2022.10.14 |
백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 14503 , 로봇 청소기 [구현, 시뮬레이션] (1) | 2022.10.13 |