시간복잡도 질문입니다!
안녕하세요 선생님~~
강의에 나온 답안의 시간복잡도는
solution 함수의 for문 안에서 compareMaps 가 실행되고, compareMaps 또한 for문을 가지기 때문에 O(N^2) 이라고 생각했는데 맞나요??
제가 구현한 코드는 아래와 같은데요 제 코드는 확실히 O(N^2) 인 것 같습니다.. ㅠ
function solution(s, t) {
let count = 0;
let l = 0;
// 1. 부분 문자열을 구하는데, t.length와 같은 길이를 가진 문자열을 구한다.
for (let r = t.length; r <= s.length; r++) {
const temp = s.substring(l++, r);
// 2. 그 문자열이 아나그램인지 확인한다.
if (isAnagram(temp, t)) count++;
else continue;
}
return count;
}
function isAnagram(str1, str2) {
// 정렬 사용하지 않고 해보기
const map = new Map();
for (let char of str1) {
if (map.has(char)) map.set(char, map.get(char) + 1);
else map.set(char, 1);
}
for (let char of str2) {
if (!map.has(char)) return false;
if (map.has(char) && !map.get(char)) map.set(char, map.get(char) - 1);
if (map.get(char) === 0) return false;
}
return true;
}
let a = 'bacaAacba';
let b = 'abc';
console.log(solution(a, b));
답변 2
3
안녕하세요^^
네. 맞습니다. O(n)코드를 완성해 놓았는데 시간이 없어 영상을 찍지 못했습니다. 다음주 주말쯤 찍어서 올리도록 하겠습니다. 아래 코드는 O(n) 코드입니다.
function solution(s, t){
let answer=0;
let sH = new Map();
for(let x of t){
sH.set(x, (sH.get(x) || 0)-1);
}
let len=t.length-1;
for(let i=0; i<len; i++){
sH.set(s[i], (sH.get(s[i]) || 0)+1);
if(sH.get(s[i])===0) sH.delete(s[i]);
}
let lt=0;
for(let rt=len; rt<s.length; rt++){
sH.set(s[rt], (sH.get(s[rt]) || 0)+1);
if(sH.get(s[rt])===0) sH.delete(s[rt]);
if(sH.size===0) answer++;
sH.set(s[lt], (sH.get(s[lt]) || 0)-1);
if(sH.get(s[lt])===0) sH.delete(s[lt]);
lt++;
}
return answer;
}
console.log(solution("bacacbcba", "abc"));
continue를 사용하는 이유
0
75
2
정렬 가능 여부 판단하기
0
62
2
알고리즘 학습법 관련해서 질문드립니다.
0
80
1
코드 리뷰 부탁드립니다!
0
88
1
indexOf를 사용해서 풀어보았습니다 !!
0
67
1
저는 이런식으로 구현 해보았습니다 !!
0
63
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
97
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
61
1
영상 보기 전에 직접 풀어봤습니다.
0
71
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
133
2
정규표현식으로 처리해도 상관없나요 ?
0
119
2
3칸씩 건너뛸 수 있을 경우
0
124
2
강의에 대해 질문있습니다.
0
133
2
Object와 Set을 이용해 풀어봤습니다.
0
116
2
이렇게 해도 되나요?
0
102
2
선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.
0
144
2
이렇게 풀어도 괜찮을까요?
0
136
1
이렇게 풀어도 괜찮을까요?
0
112
1
모든 아나그램 찾기에서 시간복잡도
0
98
1
코드리뷰 부탁드립니다.
0
129
1
for loop 탈출은 return 문으로 해도 되지 않나요?
0
129
1
투포인트알고리즘으로 풀어봤습니다.
0
138
0
코드 리뷰 부탁드립니다.
0
115
1
코드 맞게 작성한 거 아닌가여??
0
142
1





