괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예sanswer
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
입출력 예 #1,2,3,4
문제의 예시와 같습니다.
<제출답안>
처음에 push로 배열 길이를 비교해줌으로써 구현했지만 시간이 초과되었다.
function solution(s){
let arr1 = 0;
let s2 = [...s]
for(let i =0; i<s2.length; i++) {
if(s2[i] =='(') {
arr1 += 1
continue;
}
if(s2[i] ==')') {
arr1 -= 1
if(arr1 < 0) {
return false
break
}
}
}
return (arr1 == 0 )? true : false
}
<다른 풀이>
1.변수 사용이 적은 for문을 사용했다.
2.삼항 조건식의 사용으로 if 사용을 줄였다.
function solution(s){
let cum = 0
for (let paren of s) {
cum += paren === '('? 1: -1
if(cum < 0) {
return false
}
}
return cum === 0? true: false;
}
< == , === 비교하기 >
문자열도 배열이라서 딱히 변수 하나 더 생성할 필요 x
- '==' 연산자를 이용하여 서로 다른 유형의 두 변수의 [값] 비교
- '==='는 엄격한 비교를 하는 것으로 알려져 있다 ([값 & 자료형] -> true).
#간단한 예제
🔍 숫자와 불리언 비교
✔ 0값은 false와 동일하므로 -> true 출력
0 == false // true
✔ 두 피연산자의 유형이 다르기 때문에 ->false
'🗃️javascript > 프로그래머스' 카테고리의 다른 글
이진 변환 반복하기(Lv.2)[재귀함수와 filter()문 조건문 활용하기] (0) | 2023.03.25 |
---|---|
같은 숫자는 싫어(Lv.1)[filter((요소, index) => 조건식)] (0) | 2023.03.25 |
최솟값 만들기(Lv.2) (0) | 2023.03.25 |
최대공약수와 최소공배수(Lv.1)[] (0) | 2023.03.22 |
삼각형의 완성조건 (2)(Lv.0) (0) | 2023.03.22 |