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
- dp알고리즘
- 코테
- 익스프레스
- 리액트댓글기능
- 자바스크립트
- JS프로그래머스
- 백준
- 다이나믹프로그래밍
- 백준알고리즘
- CSS
- 프로그래머스
- 몽고DB
- 백준nodejs
- HTML
- 백준구현문제
- js코테
- 코딩테스트
- JS
- 프로그래머스JS
- 리액트
- 백준구현
- 안드로이드 스튜디오
- 리액트커뮤니티
- 알고리즘
- 포이마웹
- HTML5
- 백준골드
- css기초
- 백준js
- 프로그래머스코테
Archives
- Today
- Total
개발새발 로그
[JS] 백준 5430번 : AC 본문
https://www.acmicpc.net/problem/5430
📋풀이방법
1. 주어진 문자열을 3개씩 변수로 나눈다.
2. 주어진 명령어 p에 따라 반복한다.
3. p가 R이면 뒤집어준다.
4. p가 D면 앞의 요소를 빼준다.
4-1. 만약 m=0이면 error를 체크해준다.
5. 모든 반복이 끝나면 error체크유무에 따라 error를 정답 배열에 넣거나 명령어수행된 배열을 정답 배열에 넣는다.
내 제출
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim();
input=input.replace(/\r/g,"").split("\n");
let n=Number(input.shift());
let result=[];
let answer=[];
for(var i=0;i<n;i++){
result.push([input.shift(),input.shift(),input.shift()]);
}
result.forEach((x)=>{
let [p,m,arr]=x
p=p.split("");
arr=arr.slice(1,arr.length-1).split(",");
let chk=false;
let isReverse=false;
p.forEach((E)=>{
if(E=="R"){
isReverse=!isReverse;
}
else if (E=="D"){
if(m==0){
chk=true;
}
else {
m--;
if(isReverse) arr.pop();
else arr.shift();
}
}
})
if(chk){
answer.push("error");
}
else {
if(isReverse) answer.push("["+arr.reverse().join(",")+"]");
else answer.push("["+arr.join(",")+"]");
}
})
console.log(answer.join("\n"));
💢어려웠던 이유
1. 주어진 배열이 [ ~ ] 로 된 문자열이므로 [ ] 중괄호를 잘 없애줘야한다. -> slice(1,arr.length-1) 사용
2. 만약 빈 배열일 때 배열안에 빈 문자열로 인해 arr의 length가 1이 남는 상황이 생긴다.
-문제에서 주어진 배열요소의 개수 n을 이용하면된다.
3. 시간초과 이슈
-R명령어에 계속해서 arr.reverse()를 사용하면 시간초과가 나게된다.
-isReverse라는 변수를 줘서 D명령어일 때 isReverse가 true이면 pop(), false면 shift() 수행하고, 마지막에 isReverse의 유무에 따라 뒤집어준다.
4. 마지막 정답을 출력할 때 배열요소들은 "[" "]" 중괄호 문자열을 붙여서 출력해야한다.
728x90
반응형
LIST
'알고리즘' 카테고리의 다른 글
[JS] 백준 16236 : 아기상어 (0) | 2023.07.01 |
---|---|
[JS] 백준 3190번 : 뱀 (0) | 2023.06.30 |
[JS] 백준 14500 : 테르로미노 (0) | 2023.06.28 |
[JS] 백준 14503번 : 로봇청소기 (0) | 2023.06.27 |
[JS] 백준 15686 : 치킨 배달 - 구현 문제 (0) | 2023.06.26 |