코딩테스트
[JS] 올바른 괄호
미안하다 강림이 좀 늦었다
2023. 11. 10. 17:30
난이도: Lv.2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
알고리즘
결과가 true이려면 두가지 조건이 필요하다.
1. 문자열을 순회하는 중에 닫는 괄호의 개수가 여는 괄호의 개수보다 많으면 안된다.
2. 문자열을 끝까지 순회했을 때 여는 괄호의 개수와 닫는 괄호의 개수가 동일해야 한다.
코드
function solution(s) {
let count = 0;
for (let str of s) {
str === '(' ? count++ : count--;
if (count < 0) { return false; }
}
if (count !== 0) { return false; }
return true;
}
주저리
처음에는 문자열을 인덱싱하고, 여는 괄호와 닫는 괄호 개수를 따로 카운팅해서 풀었는데 효율성 테스트에서 실패했다. 푸는 논리는 똑같은데 왜 이거는 효율성 박살난건지 사실 잘 모르겠고, 문제 유형이 스택/큐 이긴 했는데 이게 스택이 맞는지도 모르겠고, 그냥 머 모르겠다..............