문자열 s와 t가 주어져요. 두 문자열이 서로 애너그램이면 true, 아니면 false를 반환해요. 애너그램은 같은 문자를 같은 개수만큼 쓰고 순서만 다른 관계예요.
두 가지 풀이를 모두 써 봐요. 정렬해서 비교하면 O(n log n)이고 한 줄로 끝나요. 문자별 개수를 세어 비교하면 O(n)이지만 코드가 몇 줄 늘어나요.
코딩 테스트에서는 대부분 정렬 풀이로 충분해요. 어느 쪽이 더 빠른지보다, 정렬이 만들어 주는 표준형이라는 발상이 7주차와 이어져요.
예시
예시 1
예시 2
예시 3
제한 사항
- 1 ≤ s.length, t.length ≤ 100,000
- s 와 t 는 영소문자로만 이루어져요.
길이부터 비교하면 대부분의 오답을 바로 걸러내요. 빈도수 풀이는 영소문자뿐이니 길이 26짜리 배열이면 충분해요 — 맵보다 빠르고 5주차 해시의 예고편이기도 해요.
javascriptCopy codefunction 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);}
예시 테스트만 실행 (Cmd/Ctrl+Enter)
숨김 테스트까지 채점 (Cmd/Ctrl+Shift+Enter)
에디터를 불러오고 있어요…
코드를 작성하고Ctrl↵를 눌러 예시 테스트를 확인해 보세요.