티스토리 뷰
적합한 괄호문법이란 몰까?
최종적인 형태에서 (와 )의 개수가 일치해야 할 것이다.
그치만 저 조건만 존재한다면 ))(( 도 적합하다고 판단해버릴 것이다.
우리가 원하는 건 (가 우선적으로 온 이후, )가 있어야한다.
이는 곧 문자 하나씩 검사하게 될 때, )의 개수가 (보다 많다고 판단되면 바로 NO로 결정을 내리면 되지 않겠는가?
정리해보았다.
1. [항시] ()((는 되지만, ()))는 성립하지 않음. 즉, (보다 )의 개수가 많음
2. [마지막에] (와 )의 개수가 일치하지 않음.
코드를 짜보았다.
function solution(inputArray){
let count = +inputArray[0];
let resultLog = [];
for(let i = 1; i < count+1; i++) {
var openBracket = 0;
var closeBracket = 0;
var result = '';
for(var index in inputArray[i]) {
switch (inputArray[i].charAt(index)) {
case '(':
openBracket++;
break;
case ')':
closeBracket++;
break;
}
if(openBracket < closeBracket){ //조건 1 검사
result = 'NO';
break;
}
}
if(openBracket != closeBracket){ //조건 2 검사
result = 'NO';
} else {
result = 'YES';
}
resultLog.push(result);
}
console.log(resultLog);
}
대충... 매 줄마다의 반복문, 그 안에서 문자 하나씩 검사하는 반복문의 형태인데,
문자 하나씩 검사할때, (와 ) 개수를 적어두되, 조건 1은 문자를 검사하고 개수를 셀때마다 체크하며, 조건 2는 모든 검사가 끝난 후 괄호 개수를 비교했다.
결과 후처리는 안하고 일단 결과를 출력해보니...

일단 예제의 케이스는 만족한다!
후처리 코드를 넣고 제출해보았다.
기억해둘 것
String.charAt(index)
해당 문자열의 index 위치의 문자 반환
이 문제가 요구한 역량은 문자열 처리, 문제해결사고? 정도인듯하다.
'■ 알고리즘 > ◻ 백준' 카테고리의 다른 글
[Nodejs]1406번: 에디터 (0) | 2022.08.02 |
---|---|
[Nodejs]1874번: 스택 수열 (0) | 2022.07.23 |
[Nodejs]9093번: 단어 뒤집기 (0) | 2022.07.20 |
[Nodejs]10828번: 스택 (0) | 2022.07.20 |
알고리즘 기초 문제 풀이 순서 (0) | 2022.07.20 |