더북(TheBook)

4. 애너그램 확인하기

애너그램은 영단어의 철자 위치를 바꿔 다른 영단어를 만들어 내는 것으로, 두 단어를 주고 이 단어가 애너그램인지 확인하는 문제가 많습니다. 더 어려운 방식으로는 많은 단어를 주고 이 중에서 애너그램이 어떤 것인지 구별하라는 문제가 나올 수도 있습니다.

철자의 위치만 바뀔 뿐 철자 자체가 변하지는 않으므로 문자열을 정렬해 서로 비교해도 되지만, 이 방법은 정렬을 사용하기 때문에 O(nlogn)의 시간이 소요됩니다. 대신 딕셔너리를 활용하여 단어별로 더하고 빼는 작업을 하면 작업 시간을 O(n)으로 크게 낮출 수 있습니다. 이러한 방법을 해시 테이블이라고 하며, 해시 단원에서 자세히 다룹니다.

5. 문자열에서 원하는 문자 찾기

실무에서도 많이 사용하는 작업 중 하나이며, 검색 문제를 해결할 때 가장 많이 사용하는 형태이자 외부 라이브러리의 도움 없이 빠르게 해결할 수 있는 방법을 끊임없이 찾아야 하는 문제 유형입니다.

문제마다 요구하는 조건이 조금씩 다르지만, 기본적으로 탐색할 때 필요 없는 부분을 빠르게 제거하는 것이 가장 핵심입니다. 전체를 검색하는 상황이 아니라면 검색량을 줄일 수 있도록 조건이 제시되거나, 검색해야 하는 문자열의 크기가 매우 작게 나오는 편이므로 무작정 .find()를 사용해 검색하기보다는 다른 방법이 없는지 한 번 더 생각해야 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.