3주차 · 문자열
쉬움문자열해시정렬

애너그램 판별

문자열 st가 주어져요. 두 문자열이 서로 애너그램이면 true, 아니면 false를 반환해요. 애너그램은 같은 문자를 같은 개수만큼 쓰고 순서만 다른 관계예요.

두 가지 풀이를 모두 써 봐요. 정렬해서 비교하면 O(n log n)이고 한 줄로 끝나요. 문자별 개수를 세어 비교하면 O(n)이지만 코드가 몇 줄 늘어나요.

코딩 테스트에서는 대부분 정렬 풀이로 충분해요. 어느 쪽이 더 빠른지보다, 정렬이 만들어 주는 표준형이라는 발상이 7주차와 이어져요.

예시

예시 1
예시 2
예시 3

제한 사항

  • 1 ≤ s.length, t.length ≤ 100,000
  • s 와 t 는 영소문자로만 이루어져요.
길이부터 비교하면 대부분의 오답을 바로 걸러내요. 빈도수 풀이는 영소문자뿐이니 길이 26짜리 배열이면 충분해요 — 맵보다 빠르고 5주차 해시의 예고편이기도 해요.
javascript
function anagramCheck(s, t) {
if (s.length !== t.length) return false;
const count = new Array(26).fill(0);
const base = "a".charCodeAt(0);
for (let i = 0; i < s.length; i++) {
count[s.charCodeAt(i) - base]++;
count[t.charCodeAt(i) - base]--;
}
return count.every((c) => c === 0);
}
이전 문제팰린드롬 검사
다음 문제문자열 압축
에디터를 불러오고 있어요…
코드를 작성하고를 눌러 예시 테스트를 확인해 보세요.