코딩 정복 가즈아~
Home
  • 분류 전체보기 (159)
    • 알고리즘 풀이 (149)
      • 프로그래머스 (89)
      • 백준 (59)
    • 취준 일기 (6)
    • 네트워크 정리 (1)
Home
  • 분류 전체보기 (159)
    • 알고리즘 풀이 (149)
      • 프로그래머스 (89)
      • 백준 (59)
    • 취준 일기 (6)
    • 네트워크 정리 (1)
블로그 내 검색

코딩 정복 가즈아~

(っ◔◡◔)っ ♥ 2021 취뽀하자!! ♥

  • 알고리즘 풀이/프로그래머스

    [level3] 프로그래머스 - 베스트앨범(JAVA)

    2021. 9. 17.

    by. 데롱디롱

    728x90

     

     

    [ 풀이 방법 ]

    - 장르별 재생 횟수를 저장해준다.

     

    - 각 장르에 속한 노래의 <고유번호, 재생 횟수>를 저장해준다.

     

    - 속한 노래가 많이 재생된 장르를 먼저 수록해야 하므로, 장르별 재생 횟수를 저장해준다.

    - 장르 내에서 많이 재생된 노래를 먼저 수록해야 하므로, 곡 수대로 내림차순 정렬 해준다.

     

    - 정렬된 num의 순서대로
       music에서 정렬된 곡들 중 상위 2곡의 고유번호를 answer(ArrayList)에 담는다.

     

     

    - ArrayList를 배열로 바꾸어 리턴한다.

     

     

     

     

    [ 전체 코드 ]

    import java.util.*;
    class Solution {
    public int[] solution(String[] genres, int[] plays) {
    ArrayList<Integer> answer = new ArrayList<>();
    HashMap<String, Integer> num = new HashMap<>(); // 장르별 총 개수
    HashMap<String, HashMap<Integer, Integer>> music = new HashMap<>(); // 장르에 속하는 노래 및 재생횟수
    for(int i = 0; i < plays.length; i++) {
    if(!num.containsKey(genres[i])) {
    HashMap<Integer, Integer> map = new HashMap<>();
    map.put(i, plays[i]);
    music.put(genres[i], map);
    num.put(genres[i], plays[i]);
    } else {
    music.get(genres[i]).put(i, plays[i]);
    num.put(genres[i], num.get(genres[i]) + plays[i]);
    }
    }
    List<String> keySet = new ArrayList(num.keySet());
    Collections.sort(keySet, (s1, s2) -> num.get(s2) - (num.get(s1)));
    for(String key : keySet) {
    HashMap<Integer, Integer> map = music.get(key);
    List<Integer> genre_key = new ArrayList(map.keySet());
    Collections.sort(genre_key, (s1, s2) -> map.get(s2) - (map.get(s1)));
    answer.add(genre_key.get(0));
    if(genre_key.size() > 1)
    answer.add(genre_key.get(1));
    }
    return answer.stream().mapToInt(i -> i).toArray();
    }
    }
    profile
    데롱디롱

    희희.. (๑′ᴗ‵๑)

    저작자표시 (새창열림)

    '알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

    [level2] 프로그래머스 - 짝지어 제거하기(JAVA)  (0) 2021.09.18
    [level2] 프로그래머스 - 더 맵게(JAVA)  (0) 2021.09.18
    [level2] 프로그래머스 - 프린터(JAVA)  (0) 2021.09.17
    [level3] 프로그래머스 - 가장 먼 노드(JAVA)  (0) 2021.09.17
    [level3] 프로그래머스 - 순위(JAVA)  (0) 2021.09.17

    댓글

    관련글

    • [level2] 프로그래머스 - 짝지어 제거하기(JAVA) 2021.09.18
    • [level2] 프로그래머스 - 더 맵게(JAVA) 2021.09.18
    • [level2] 프로그래머스 - 프린터(JAVA) 2021.09.17
    • [level3] 프로그래머스 - 가장 먼 노드(JAVA) 2021.09.17
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

피할 수 없다면, 순간을 즐겨라

Designed by Nana
블로그 이미지
데롱디롱
희희.. (๑′ᴗ‵๑)

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.