GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • 자바스크립트
  • PYTHON
  • 파이썬
  • 독해
  • 백준파이썬
  • 프로그래머스
  • 영어독해
  • 코드업파이썬
  • 프로그래밍언어
  • 프로그래머스자바스크립트
  • 영어
  • 코드업
  • 코테
  • 코딩
  • 백준풀이
  • 프로그래머스풀이
  • javascript
  • 코딩테스트
  • 프론트엔드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 5397 , 키로거 [자료구조, 스택]
알고리즘 공부/백준 - 자바스크립트

백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 5397 , 키로거 [자료구조, 스택]

2022. 10. 18. 23:24

백준/ 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

 

5397번: 키로거

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입

www.acmicpc.net

 

 

 

요구사항📋 

 

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
    '알고리즘 공부/백준 - 자바스크립트' 카테고리의 다른 글
    • 백준/ Gold 4 문제 , 백준 Node.js 자바스크립트 9935, 문자열 폭발 [자료구조, 스택]
    • 백준/ Gold 2 문제 , 백준 Node.js 자바스크립트 1918 , 후위 표기식[자료구조, 스택]
    • 백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 3986 , 좋은 단어 [자료구조, 스택]
    • 백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 1935 , 후위 표기식2 [자료구조, 스택]
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바