[프로그래머스] 괄호 회전하기 - JavaScript
프로그래머스 Level 2 - 괄호 회전하기
- 문제 분류 : 월간 코드 챌린지
- 문제 출처 : 프로그래머스 Level 2 - 괄호 회전하기
📌 문제 설명
📌 생각한 풀이 방법
- s를 왼쪽으로 한칸 씩 회전시키며 s의 길이만큼 반복한다
- (,{,[ 이 나오면 check에 해당 값을 push한다.
- ),},] 이 나오면 check의 마지막 값과 맞는지 확인한다.
3-1. 다를 경우 해당 조건은 만족하지 않음
3-2. 짝이 맞는 경우 check을 pop시킴- check가 비어있을 경우 count를 증가시킴
- 2~4를 arr을 모두 탐색할 때까지 반복함
📌 풀이
function solution(s) {
s = s.split("");
for (let i = 0; i < s.length; i++) {
// s를 왼쪽으로 한칸 씩 회전시키며 s의 길이만큼 반복
let first = s.shift();
s.push(first);
let arr = [...s];
let check = [];
let count = 0;
let valid = true;
while (arr.length) {
// arr을 모두 탐색할 때까지 반복함
let current = arr.shift();
if (current === "(" || current === "[" || current === "{") {
// (,{,[ 이 나오면 check에 해당 값을 push
check.push(current);
} else {
if (current === ")") {
if (check[check.length - 1] !== "(") {
// ),},] 이 나오면 check의 마지막 값과 맞는지 확인
valid = false; // 다를 경우 해당 조건은 만족하지 않음
break;
}
check.pop(); // 짝이 맞는 경우 check을 pop시킴
}
if (current === "]") {
if (check[check.length - 1] !== "[") {
// ),},] 이 나오면 check의 마지막 값과 맞는지 확인
valid = false; // 다를 경우 해당 조건은 만족하지 않음
break;
}
check.pop(); // 짝이 맞는 경우 check을 pop시킴
}
if (current === "}") {
if (check[check.length - 1] !== "{") {
// ),},] 이 나오면 check의 마지막 값과 맞는지 확인
valid = false; // 다를 경우 해당 조건은 만족하지 않음
break;
}
check.pop(); // 짝이 맞는 경우 check을 pop시킴
}
}
if (check.length === 0) {
count++; // check가 비어있을 경우 count를 증가시킴
}
}
if (valid) {
return count;
}
}
return 0;
}
Author And Source
이 문제에 관하여([프로그래머스] 괄호 회전하기 - JavaScript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tnehd1998/프로그래머스-괄호-회전하기-JavaScript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)