[JavaScript] 올바른 괄호

2022. 8. 23. 16:57Algorithm/프로그래머스

level : 2

문제 링크 : 올바른 괄호

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

My Solution

function solution(s){
    let answer = true;
    let mymap = new Map();
    mymap.set('set' , 0);
    const len = s.length;
    for(let i = 0; i < len; i++){
        if(s[i]==='(')
            mymap.set('set',mymap.get('set')+1);
        else
            mymap.set('set',mymap.get('set')-1);
        if(mymap.get('set')<0){
            answer = false;
            break;
        }
    }
    answer = mymap.get('set') !== 0 ? false : answer;
    return answer;
}

풀이방법

answer를 true로, len을 s의 길이로 초기화한다.

mymap이라는 Map Object에 'set'이라는 key를 생성하고 value를 0으로 초기화한다.

s를 0부터 끝까지 하나씩 확인을 한다.

왼쪽 괄호('(')가 오면 value를 1 증가시키고 오른쪽 괄호(')')가 오면 value를 1 감소시켰다. 이 때, value가 0미만이면 오른쪽 괄호가 더 많은 상황이기에 answer에 false로 바꾸고 반복문을 탈출한다.

answer가 0이아니면 모든 괄호의 짝이 맞지 않는 것이기에 false를 반환하고 아닐시 true를 반환한다.


느낀점
처음에는 왼쪽 괄호('(')와 오른쪽 괄호(')')를 각각 Map Object에 담아 갯수를 확인했으나 하나만 있어도 풀수 있고 더울 효율적이라는 생각이 들었다.

굳이 Map Object가 아닌 변수로 count할 수 있었다고 생각이 들었다. 그 방법이 더욱 효율적이다.

'Algorithm > 프로그래머스' 카테고리의 다른 글

[JavaScript] 위장  (0) 2022.08.31
[JavaScript] 두 큐 합 같게 만들기  (0) 2022.08.23
[JavaScript] 수식 최대화  (0) 2022.08.16
[JavaScript] 거리두기 확인하기  (0) 2022.08.15
[JavaScript] 디스크 컨트롤러  (0) 2022.08.02