프로그래머스 - 올바른 괄호
2020-03-02
최대값과 최솟값
- 이해
- 문자열로 구성된 괄호들을 짝 찌어있는지 확인
- 계획
- 스택을 이용해서 풀자
- peek()함수를 구현하는 것보다는 마지막에 있는 원소를 뽑아 확인하자
- length가 0 보다 크다면 false 0 이면 true를 반환하자
- 실행
describe('올바른 괄호구하기', () => { test('should ', () => { expect(solution('(()(')).toBeTruthy(); }); }); const solution = (s) => { const stack = []; for(let target of s){ if(!stack.length){ stack.push(target) }else if(stack[stack.length-1] === '('){ if(target === ')'){ stack.pop(); }else if(target === '('){ stack.push(target) } }else if(stack[stack.length-1] === ')'){ stack.push(target) } } return stack.length > 0 ? false : true };
- 반성
- stack.length === 0 보다는 falsy 값을 이용하면 코드가 간결해진다
- falsy : false, null, undefined, 0, NaN, ''(빈 문자열)
- 처음 for문으로 돌릴때는 효율성이 안나와, for..of를 사용하였다.
- for..of문은 유사배열을 원소를 하나씩 꺼내주는 특성이 있기 때문이다.
- 다른분은 정규표현식을 이용해서 풀었다... 나도 정규표현식을 자주 사용해보자
function is_pair(s){ var result = s.match(/(\(|\))/g); return result[0] == '(' && result.length % 2 == 0 ? true : false }