문제 제목
Valid Parentheses
문제 링크
https://leetcode.com/problems/valid-parentheses/
코드
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
let A = [s[s.length-1]];
for (let i =s.length-2; i>=0; i--){
if(A.length==0){
A.push(s[i]);
}
else{
if(A[A.length-1].charCodeAt() - s[i].charCodeAt() == 2 || A[A.length-1].charCodeAt() - s[i].charCodeAt() == 1) {
A.pop();
}
else{
A.push(s[i]);
}
}
}
if(A.length==0) return true;
else {
return false;
}
};
풀기 전 생각
stack을 설명 할 때 교수님께서 이 예제를 예로 들어주셨다
그래서 stack을 써서 풀자고 생각했다 .
JS 에는 built-in 된 stack 모듈이 없어 array를 사용했다.
괄호를 비교 할 때 Map을 쓸 생각도 해 봤는데 어떻게 해야할지 잘 모르겠어서
그냥 () [] {} 괄호끼리 아스키코드로 바꾸면 1 이랑 2씩 차이난다는걸 알게돼서
element.charCodeAt() 으로 문자를 아스키코드로 바꾸어 괄호를 비교했다.
풀고 난 후 Discuss 본 후 생각
그리 좋은 풀이는 아니지만 또 나쁘지 않은 것 같기도 하다. O(n)으로 풀었으니 말이다.
아직 알고리즘을 많이 풀어보지 못해 어떤 방법이 더 효율적일지 생각하면서 풀기보다는
생각 난 대로 정리해서 풀고 있어서 뭐가 더 효율적인지 잘 모르겠다. 풀다보면 점점 나아질거다.!
Map으로 푸는 방법도 있으니 기회가 되면 그렇게도 풀어보자
'알고리즘 > leetcode' 카테고리의 다른 글
[leetcode/JS] 234. Palindrome Linked List / Javascript (0) | 2022.08.25 |
---|---|
[leetcode/JS] 70. Climbing Stairs / Javascript (0) | 2022.08.23 |
[leetcode/JS] 617. Merge Two BInary Trees / Javascript (0) | 2022.05.12 |
[leetcode/JS] 28. Implement strStr() /Javascript (0) | 2022.05.12 |
[leetcode/JS] 94. Binary Tree Inorder Traversal / Javascript (0) | 2022.05.02 |
댓글