티스토리 뷰

적합한 괄호문법이란 몰까?

최종적인 형태에서 (와 )의 개수가 일치해야 할 것이다.

그치만 저 조건만 존재한다면 ))(( 도 적합하다고 판단해버릴 것이다.

우리가 원하는 건 (가 우선적으로 온 이후, )가 있어야한다.

이는 곧 문자 하나씩 검사하게 될 때, )의 개수가 (보다 많다고 판단되면 바로 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
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
글 보관함