250x250
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
- jest
- 테이블 해시 함수
- 자바스크립트
- nextjs-performance
- mutationobserver
- Jest uuid syntax
- 구름톤 챌린지
- 호텔 대실
- 리액트네이티브
- nextjs
- 최솟갑 구하기
- 과제 진행하기
- 귤 고르기
- 구름톤챌린지
- ResizeObserver
- mock date
- 구름톤
- 프로그래머스
- Leetcode #javascript #알고리즘 #Algorithms #js
- Hermes Engine
- 리액트네이티브 엔진
- 연결 요소 제거하기
- 날짜 테스트
- Google 애널리틱스
- 통신망분석
- 헤르메스 엔진
- create-next-app
- 중첩 점
- 테스트 Date
- JavaScript
Archives
- Today
- Total
나만보는개발공부블로그
[프로그래머스] 괄호 회전하기 본문
문제 내용
다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.
- (), [], {} 는 모두 올바른 괄호 문자열입니다.
- 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다.
- 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다.
대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.
해결 방안
괄호 문제는 스택으로 대부분 해결하기때문에 스택으로 문제를 풀었다. 여기서 회전으로 S의 모든 길이까지 각각 돌아가면서 확인하기때문에 slice함수로 각각 회전을 구현해주고 스택을 초기화시켜주면서 옳은 괄호로 되는지 카운트 해가면서 해결해나간다. 그리고 카운트 올라가는 조건으로는 스택이 비어있어야 하거나 올바르게 flag가 남아있는경우이다.
자바스크립트 코드
function solution(s) {
let result = 0;
for(let i = 0; i<s.length; ++i){
const list = s.slice(i) + s.slice(0,i);
let stack = [];
let flag = true;
for(let s of list){
if(s === '{' || s === '[' || s === '(') {
stack.push(s)
} else {
let curr = stack.pop();
if(curr === '{' && s === '}'){
continue;
}
if(curr === '[' && s === ']') {
continue;
}
if(curr === '(' && s === ')'){
continue;
}
flag = false;
break;
}
}
if(flag && stack.length === 0){
result++;
}
}
return result;
}
'Algorithms' 카테고리의 다른 글
[프로그래머스] 괄호변환 (1) | 2023.10.16 |
---|---|
[프로그래머스] 주차 요금 계산 (0) | 2023.10.12 |
[프로그래머스] 방금그곡 (1) | 2023.10.11 |
[구름 먼데이 챌린지] 단풍나무 (0) | 2023.10.10 |
[구름 먼데이 챌린지] 구름이의 여행 (1) | 2023.10.09 |