반응형
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
- 알고리즘
- 자바스크립트
- Algorithm
- Crawling
- 문자열
- 백준
- 크롤링
- 소켓
- BFS
- 가천대
- 그래프
- 레벨 1
- 수학
- 프로그래머스
- 쉬운 문제
- Nestjs
- dp
- type challenge
- 타입 챌린지
- HTTP 완벽 가이드
- 프로그래머스 레벨 2
- 타입스크립트
- dfs
- socket
- Node.js
- HTTP
- ip
- typescript
- TCP
- javascript
Archives
- Today
- Total
kakasoo
[node.js] 괄호 회전하기 ( 프로그래머스 레벨2 ) 본문
반응형
const left = 0;
const right = 1;
const isRight = (arr) => {
const stack = [];
for (const item of arr) {
stack.push(item);
if (stack.length >= 2) {
while ((stack[stack.length - 2] === '(' && stack[stack.length - 1] == ')') ||
(stack[stack.length - 2] === '[' && stack[stack.length - 1] == ']') ||
(stack[stack.length - 2] === '{' && stack[stack.length - 1] == '}')) {
stack.pop();
stack.pop();
}
}
}
return stack.length ? false : true;
}
const solution = (s) => {
const strArr = s.split('');
let i = strArr.length;
let count = 0;
while(i--) {
strArr.push(strArr.shift());
if(isRight(strArr)) {
count++;
}
}
return count;
}
회전하는 것은 문자열 길이 만큼을 해야 하며, ( do while문으로 짰다면 length - 1 까지만 해도 된다. )
돌면서 올바른 괄호 문자열이 맞는지 체크해줘야 한다.
isRight 함수는 stack을 만들고 그 안에 계속 문자를 push하며 올바른 경우마다 2개 씩 pop한다.
마지막에 모든 문자가 pop되서 사라지면 ok, 사라지지 않으면 올바르지 않은 경우이다.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 가장 먼 노드 ( 프로그래머스 레벨3 ) (0) | 2021.07.02 |
---|---|
[node.js] 방문 길이 ( 프로그래머스 레벨2 ) (0) | 2021.07.02 |
[node.js] 쿼드 압축 후 개수 세기 ( 프로그래머스 레벨2 ) (0) | 2021.07.01 |
[node.js] 튜플 ( 프로그래머스 레벨2 ) (0) | 2021.07.01 |
[node.js] 땅따먹기 ( 프로그래머스 레벨2 ) (0) | 2021.07.01 |