반응형
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 |
Tags
- 크롤링
- 프로그래머스
- 프로그래머스 레벨 2
- socket
- 타입스크립트
- HTTP 완벽 가이드
- 수학
- Nestjs
- 백준
- type challenge
- 가천대
- 타입 챌린지
- Crawling
- 레벨 1
- 알고리즘
- javascript
- TCP
- 그래프
- 소켓
- Algorithm
- dp
- BFS
- 자바스크립트
- dfs
- Node.js
- 문자열
- ip
- HTTP
- 쉬운 문제
- typescript
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 |