❗ 조건
조건1. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다.
조건2. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다.
조건3. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다.
조건4. 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다.
조건5. 짝을 이루는 두 괄호가 있을 때, 그 사이에 있는 문자열도 균형이 잡혀야 한다.
❗ 풀이
let input = require('fs').readFileSync('dev/stdin').toString().trim().split('\n');
let compareStr;
let compareArray = [];
let result = [];
let paArray = ['(',')','[',']']
for (i=0 ; i < input.length ; i++){
compareStr = input[i].split('')
for(j=0 ; j < compareStr.length ; j++){
if(compareStr[0] ==='.'){
compareArray.push('.')
break
}
paArray.includes(compareStr[j]) == true ? compareArray.push(compareStr[j]) : null;
if(compareArray[compareArray.length-2] + compareArray[compareArray.length-1] === "()" || compareArray[compareArray.length-2] + compareArray[compareArray.length-1] === "[]"){
compareArray.pop()
compareArray.pop()
}
}
if(compareStr[0] != '.'){
compareArray.length !== 0 ? result.push('no') : result.push('yes')
}
compareArray = []
}
console.log(result.join('\n'));
1. 필요 변수 정의
2. 입력값을 split하고 split한 값을 반복문 돌려줌
3. 반복문을 돌리다가 값의 0번 index가 .이면 break하고 배열에 .을 넣음
4. 반복문 내의 값이 paArray(괄호)에 포함되는 문자열이면 비교를 위한 배열에 push
5. 배열 길이-2 index와 배열 길이-1 index를 붙혔을 때 괄호 모양이 되면 해당 index의 값을 pop
6. 내부 반복문이 끝나고 yes or no를 판별 후 결과 배열에 push
7. 판별 후 판별을 위한 배열을 초기화
8. 반복문이 끝나면 결과 배열을 join을 통해 출력
'알고리즘 풀이' 카테고리의 다른 글
[JAVASCRIPT] 백준 1120번 문제 풀이 (0) | 2023.02.26 |
---|---|
[JAVASCRIPT] 백준 1032번 문제 풀이 (0) | 2023.02.23 |
[JAVASCRIPT] 백준 1302번 문제 풀이 (0) | 2023.02.07 |
[JAVASCRIPT] 백준 1439번 문제 풀이 (0) | 2023.01.31 |
[JAVASCRIPT] 백준 14425번 문제 풀이 (3) | 2023.01.19 |