---
# System prepended metadata

title: Untitled

---

```
開カッコと閉カッコからなる文字列が与えられる。
開カッコと閉カッコがきちんと対応している場合にはTrueを、それ以外の場合にはFalseを返してください。
# 入力と出力の例
() => True
)( => False # 閉カッコが先に来てしまっている
( => False
()() => True
(()) => True
(())) => False
(( => False
())(() => False
```

```typescript=
function countChar(input: string, char: string);
function checkBraces(input: string): boolean {        
    // return false;
    let flag: boolean = true;
    if (input.length % 2 !== 0) { // 文字数が偶数子じゃないのでfalse
        flag = false;
    }
    if (input[0] !== '(') { // 最初の文字が(じゃないのでfalse
        flag = false;
    }
    const openCharCount: number = countChar(input, '(')
    const closeCharCount: number = countChar(input, ')')
    
    if (openCharCount !== closeCharCount) {
        flag = false;
    }
    
    // const stringValues: number[] = [];
    let total = 0;
    for (let i=0; i<= input.length; i++) {
        if (input[i] === '(') {
            total += 1    
        }
        else if (input[i] === ')') {
            total -= 1
        }
        
        if (total < 0) {
            flag = false
            break;
        }
        
    }
    

    if (total !== 0) {
        flag = false
    }
        
    return flag;
}
```