728x90
1. 1번풀이
function solution(s) {
var answer = true;
s = s.split("");
while (true) {
const idx1 = s.indexOf("(");
const idx2 = s.indexOf(")");
if (idx2 < idx1 || idx1 == -1 || idx2 == -1) {
answer = false;
break;
}
s.splice(idx2, 1);
s.splice(idx1, 1);
if (s.join("") == "") {
break;
}
}
return answer;
}
효율성테스트에서 실패 splice가 문제라고 생각함 : 효율성 실패
2. 2번풀이
function solution(s) {
var answer = true;
while (true) {
const idx1 = s.indexOf("(");
const idx2 = s.indexOf(")");
if (idx2 < idx1 || idx1 == -1 || idx2 == -1) {
answer = false;
break;
}
s = "".concat(s.slice(0, idx1), s.slice(idx1 + 1, idx2), s.slice(idx2 + 1));
if (s == "") {
break;
}
}
return answer;
}
index로 접근할때 그 값이 없으면 처음부터 끝까지 검색하기 때문에 오래걸린다고 생각함 : 효율성 실패
3. 3번풀이
function solution(s) {
var answer = true;
while (true) {
s = s.split("()").join("");
if (s == "") break;
if (s.charAt(0) == ")" || s.charAt(s.length - 1) == "(") {
answer = false;
break;
}
}
return answer;
}
끝나는 조건이 부족하다고 생각함 : 효율성 실패
4. 4번풀이
function solution(s) {
if(s.length%2) return false
var answer = true;
while (true) {
s = s.split("()").join("");
if (s == "") break;
if (s.charAt(0) == ")" || s.charAt(s.length - 1) == "(") {
answer = false;
break;
}
}
return answer;
}
()가 2개씩묶여있으니 2로 나눴을때 나머지가 있으면 false를 반환 : 효율성 2번통과 1번 실패
5. 5번풀이
function solution(s) {
let count = 0;
for (const value of s) {
count += value == "(" ? 1 : -1;
if (count < 0) return false;
}
return count == 0 ? true : false;
}
split과 join을 계속 하는거보다 s의 인덱스로 접근해서 쌓는게 더 빠른것 같다.
이문제 때문에 BigO표기법 공부를 시작했다..
728x90
'개발 > 알고리즘' 카테고리의 다른 글
[BigO] 객체와 배열 (1) | 2022.09.29 |
---|---|
[코딩테스트] 프로그래머스 문제 모음 (0) | 2022.09.28 |
[BigO] BigO 표기법 (0) | 2022.09.26 |
[코딩테스트] 최대공약수와 최소공배수 (0) | 2022.09.20 |
[코딩테스트] 프로그래머스 문제 모음 (0) | 2022.09.20 |