inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

8. 모든 아나그램 찾기(Hash & Sliding Window && Two Pointers Algorithm)

여러분 강의에서 제공한 풀이는 O(s*t)입니다!

433

dgkim3811
0

강의에서 제공한 풀이는 O(s*t)이구요!

강사님이 질문 답변으로 제공한 O(n)코드 올립니다!

동일한 투 포인터 풀이로 한 번 천천히 보시면 좋을 것 같아요👍🏻

function main(s, t) {
  let hash = new Map();

  for (let i = 0; i < t.length; i++) {
    hash.set(t[i], (hash.get(t[i]) || 0) + 1);
  }

  for (let i = 0; i < t.length - 1; i++) {
    hash.set(s[i], (hash.get(s[i]) || 0) - 1);
    if (hash.get(s[i]) === 0) hash.delete(s[i]);
  }

  let lt = 0;
  let result = 0;
  for (let rt = t.length - 1; rt < s.length; rt++) {
    hash.set(s[rt], (hash.get(s[rt]) || 0) - 1);
    if (hash.get(s[rt]) === 0) hash.delete(s[rt]);
    if (hash.size === 0) result++;

    hash.set(s[lt], (hash.get(s[lt]) || 0) + 1);
    if (hash.get(s[lt]) === 0) hash.delete(s[lt]);
    if (hash.size === 0) result++;
    lt++;
  }

  console.log(result);
}

main("bacaAacba", "abc");

javascript 코딩-테스트

답변 0

코테 관련 질문

0

26

2

코테 준비 방법 문의

0

27

1

공부 시작..

0

20

1

고민이있습니다...!

0

128

1

백준 서비스 종료

0

294

1

재귀함수 코드를 작성하는 단계가 어렵습니다.

0

226

0

강의에 나오는 알고리즘이 코테에 많이 나오는건가요?

0

359

0

구현 유형 추천문제

0

323

1

[질문] 삼성 SW 역량테스트 D-5, 효과적인 학습 커리큘럼 추천 부탁드립니다

0

374

1

독하게 시작하는 C 프로그래밍 완강 후, 자료구조·알고리즘 학습 방향과 언어 선택에 대한 고민

0

364

0

코딩테스트 언어관련

0

420

0

공부 방법 관련.

0

401

0