less than 1 minute read

42579. 베스트앨범 / c++ / level3 / 17분

문제 및 코드 (링크)

image

접근 방식

문자열

  1. 각 장르의 곡들 중, 조건에 맞는 2곡씩을 수록 (고유 번호를 벡터에 삽입) 하여 반환하는 문제 (단 장르에 곡에 1곡만 있다면 1곡만 수록)
  2. 조건에 따라 크게 필요한 값은 2개였다.
    1. 각 장르의 총 재생 횟수
    2. 각 장르에 속한 곡들의 정보 (고유 번호, 재생 횟수)
  3. 2번의 데이터를 각각 unordered_map 으로 만들고 (genrePlayCountMap, genreMap), 파싱한 후
  4. 2-1 컨테이너 같은 경우 vector 로 변환하여 정렬 (genrePlayCountVector), 2-2는 맵의 밸류값이 벡터였으므로 거기서 정렬해줬다.
  5. 그리고 정렬된 genrePlayCountVector 을 순회하며 첫 번째 곡을 수록 (고유 번호를 삽입)
    • 만약 해당 장르에 곡이 2곡 이상 존재하면 두 번째 곡도 수록
  6. asnwer 를 반환
  7. 해결

생각해 볼 점

  1. 예전에 unordered_map 과 map 의 속도 차이를 체감하고 나서는, 굳이 정렬이 필요 없는 해싱의 경우 unordered_map 을 사용하여 속도를 높였다.
  2. 이번 문제의 경우 예전에도 몇 번 풀어봤던 문제였는데, 레벨3이었기 때문에 처음 풀 때는 꽤나 어렵게 느껴졌었다. 하지만 이번에 풀 때는, 조건을 명확하게 이해하고 풀다보니 막힘 없이 풀게 되었다. 다시금 많은 문제 유형을 풀어야 한다는 점과 조건을 잘 이해하는게 중요하다는 점을 느낄 수 있었다.

해시태그

#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL