[PS]正しいかっこ(LV 2)


プログラマレベル2


右かっこ


かっこは「(アルファベットで開く場合は、アルファベット「」で閉じる必要があります).
例:
  • "()"()または"(()"()は有効なかっこです.
  • ")("または"()"()は無効なかっこです.
  • 指定された文字列sが「(」または「)のみで構成されている場合は、解関数を完了し、文字列sが正しいカッコである場合はtrueを返し、カッコが正しくない場合はfalseを返します.
    せいげんじょうけん
  • 文字列s長:100000以下の自然数
  • 文字列sは「(」または「)」のみからなる.
  • に答える

    function solution(s) {
      // ( 가 열린 횟수를 추가한다
      let c = 0;
      // s만큼 돈다
      for (let i = 0; i < s.length; i++) {
        // 괄호가 열렷으면 추가시켜줌
        if (s[i] === "(") {
          c++;
        } else {
          c--;
          // 아니면 닫힌거니 열린횟수에서 차감시켜준다
        }
        // 반복문을 도는도중에 c가 -1이 되는순간
        // 괄호가 이상한상태니 false를 반환시킴
        if (c < 0) {
          return false;
        }
      }
    
      // 반복문이 종료된뒤에 남은괄호가 1이상이면 false
      // 완전히 닫히면 true
      return c > 0 ? false : true;
    }
    
    // 근데 같은풀이를 제출을 3번햇는데
    // 2번실패하고 1번은 통과해서 풀려짐;
    // 문제가이상하다

    の最後の部分


    何度もタイムアウトが続いていたので、答えを変えて合格しました.
    最初はfor文の数を比較し、テストケースを通過し、コミット時に問題が発生しました.
    次にカッコのオープン状態を比較すると、効率に問題が発生します.
    繰り返し文のカッコ(図に示すように)に異常が発生した場合はfalseを返して解きます.