본문 바로가기

오늘의 공부/코딩테스트

[Hacker Rank] Sherlock and Anagrams

기가막히다..

문자열 반복 문제는 해시테이블을 이용하여 하나씩 카운트하면 편할 것 같다.

 

1. total int 값을 선언하고, 청크 dic 을 만든다. 여기에 청크의 개수를 메모할 것이다.

2. for 문을 두 개 돌린다. 하나는 청크의 길이, 하나는 시작 인덱스임.

  2.1.  for 문을 이용해 만든 청크를 정렬하여 반복을 없앤다.

  2.2. 청크 dic에 정렬한 청크를 입력하고 카운트를 한다.

    2.2.1 청크를 구성한문자가 같다면 똑같은 문자열으로 만들 수 있다.

    2.2.2. 청크 하나일 때는 만들 수 있는 청크가 0이므로 dic 디폴트 값은 0으로 설정한다. 

    2.2.3. 청크가 n(n>1)개일 때, 만들 수 있는 청크는 n-1개 이다.

  2.3. 따라서 청크의 디폴트 값은 0으로 설정한 후 이를 total에 더한다.

  2.4. 청크 dic[청크] += 1 한다.  

 

문제 풀이 링크(link)