Codility Lesson7. Stacks and Queues - Brackets

세나정·2023년 4월 25일
0
post-thumbnail

Tasks

https://app.codility.com/programmers/lessons/7-stacks_and_queues/brackets/

내 풀이

자료구조와 알고리즘 수업에서 배웠던 stack법을 떠올리고 참고해서 풀었다.

function solution(S) {
    stack = [];
    S = S.split('')

    for (let v in S) {
    
        // v는 S의 인덱스값인 숫자일 뿐이니
        // v를 S[v]에 넣어 S의 각 index를 뽑음
        let i = S[v]
		
        // 처음이 열리는 애라면 넣고
        if ( i==='{' || i === '(' || i === '[') {
            stack.push(i)
        } else {
        	// 스택의 길이가 0이라면 0을 반납하여 에러처리를 해줌
            if (stack.length === 0) return 0
            
            // 그후, 들어온 애들이 닫는 애고, 마지막으로 존재하는 애가 {라면 
            // 짝이 일치하는 것이니 stack에서 한 개를 빼줌
            if(i === '}' && stack[stack.length-1]==='{') stack.pop()
            if(i === ']' && stack[stack.length-1]==='[') stack.pop()
            if(i === ')' && stack[stack.length-1]==='(') stack.pop()
        }
    }
    
	// 최종적으로 짝 지어진 애들을 뺐는데도 길이가 남아있다면 맞춰지지 않는 것
    return stack.length > 0 ? 0 : 1
}

profile
기록, 꺼내 쓸 수 있는 즐거움

0개의 댓글