본문 바로가기

Algorithm/문제풀이

Codility Lesson7 - Brackets

🔍 문제


 

 

Brackets coding task - Learn to Code - Codility

Determine whether a given string of parentheses (multiple types) is properly nested.

app.codility.com

 

✏️ 풀이 - JS


문자열안에 괄호의 짝이 알맞게 들어가있는지 체크하는 문제이다. 기본적으로 stack의 후입선출을 이용해서 풀었다. 여는 괄호는 따로 arr이라는 배열에 넣어주고, 닫는 괄호가 나왔을 때는 앞에서 여는 괄호가 담긴 arr.pop()을 해서 가장 마지막의 여는 괄호를 꺼내서 맞는 짝인지 확인해주었다. 참고로, 처음에는 여는 괄호의 짝이 없는(닫는 괄호가 부족한 상황) 예외를 생각하지 못해서 조금 해멨다. if(arr.length !== 0) return 0 로 예외를 잡아주어서 정확도, 성능 모두 100%로 통과하였다.

function solution(S) {
    if(S.length === 0) return 1;

    let arr = [];

    for(let i in S) {
        let c = S[i]
        if(c === '{' || c === '[' ||c ==='(') {
            arr.push(c);
        } else {
            if(arr.length === 0) return 0; //여는 괄호 없이 바로 닫는 괄호가 나온 경우

            if(c === '}' && arr.pop() !== '{') return 0;
            if(c === ']' && arr.pop() !== '[') return 0;
            if(c === ')' && arr.pop() !== '(') return 0;
        }
    }

    if(arr.length !== 0) return 0 //닫는 괄호가 모자란 경우

    return 1;
}

'Algorithm > 문제풀이' 카테고리의 다른 글

Codility Lesson7 - Nesting  (0) 2019.08.12
Codility Lesson7 - Fish  (0) 2019.08.11
Codility Lesson6 - NumberOfDiscIntersections  (0) 2019.08.11
Codility Lesson6 - Triangle  (0) 2019.08.10
Codility Lesson6 - Distinct  (0) 2019.08.10