본문 바로가기
Algorithm/문제풀이

[Codility] Brackets (Easy) by javascript - AVAILABLE LESSONS 7

by 썸머워즈 2022. 4. 20.
반응형

▷ 문제 : AVAILABLE LESSONS 7 - Brackets (Easy)

 

Brackets coding task - Learn to Code - Codility

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

app.codility.com

▷ 해결 날짜 : 2022.04.20
▷ 소요 시간 : 30분
▷ 풀이 과정 :

괄호의 짝을 맞추는 문제이다.

일단 Lesson7 은 Stacks and Queues 문제이기 때문에 이 문제는 Stack을 사용하면 된다는 것을 알 수 있다.

 

여는 괄호가 나왔을 때 스택에 담아두고 닫는 괄호가 나왔을때 하나씩 배서 비교해주는 로직을 만들어주면 구현할 수 있다.

몇가지 예외 사항에 대해서만 처리를 해주면 되는데,

여는 괄호가 없는데 닫는괄호가 나왔을 경우, 여는 괄호가 남았는데 닫는 괄호가 끝났을 경우만 처리해주면 된다.

 

▷ 구현

function solution(S) {
    const nested = new Map([
       ['{', 3], ['}', 3],
       ['[', 2], [']', 2],
       ['(', 1], [')', 1] 
    ]);

    const opened = [];
    for(let nest of S){
        if(['{', '[', '('].includes(nest)){
            opened.push(nest);
        }else{
            let open = opened.pop();
            if(!open) return 0;
            if(nested.get(nest) !== nested.get(open)) return 0;
        }
    }
    if(opened.length) return 0;
    return 1;
}


▷ 복기 :

요즘들어 좀 더 깔끔하고 성능이 좋은 코드가 뭘까 고민을 많이하게 되는데, 이게 최선인가 싶기도하고 풀고나서 다른사람 코드좀 찾아봐야겠다.

반응형


댓글

TOP