99클럽 코테 스터디 3기 5일차 TIL - 42579 베스트앨범
42579. 베스트앨범 / c++ / level3 / 17분
문제 및 코드 (링크)
접근 방식
문자열
- 각 장르의 곡들 중, 조건에 맞는 2곡씩을 수록 (고유 번호를 벡터에 삽입) 하여 반환하는 문제 (단 장르에 곡에 1곡만 있다면 1곡만 수록)
- 조건에 따라 크게 필요한 값은 2개였다.
- 각 장르의 총 재생 횟수
- 각 장르에 속한 곡들의 정보 (고유 번호, 재생 횟수)
- 2번의 데이터를 각각 unordered_map 으로 만들고 (genrePlayCountMap, genreMap), 파싱한 후
- 2-1 컨테이너 같은 경우 vector 로 변환하여 정렬 (genrePlayCountVector), 2-2는 맵의 밸류값이 벡터였으므로 거기서 정렬해줬다.
- 그리고 정렬된 genrePlayCountVector 을 순회하며 첫 번째 곡을 수록 (고유 번호를 삽입)
- 만약 해당 장르에 곡이 2곡 이상 존재하면 두 번째 곡도 수록
- asnwer 를 반환
- 해결
생각해 볼 점
- 예전에 unordered_map 과 map 의 속도 차이를 체감하고 나서는, 굳이 정렬이 필요 없는 해싱의 경우 unordered_map 을 사용하여 속도를 높였다.
- 이번 문제의 경우 예전에도 몇 번 풀어봤던 문제였는데, 레벨3이었기 때문에 처음 풀 때는 꽤나 어렵게 느껴졌었다. 하지만 이번에 풀 때는, 조건을 명확하게 이해하고 풀다보니 막힘 없이 풀게 되었다. 다시금 많은 문제 유형을 풀어야 한다는 점과 조건을 잘 이해하는게 중요하다는 점을 느낄 수 있었다.
해시태그
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL