[프로그래머스] 베스트앨범 - 자바
·
TIL/알고리즘
문제 설명  문제 풀이먼저 장르별로 노래를 분류해야하므로 해시맵을 활용하면 좋을 것 같다는 생각이 들었다.장르 내에서 노래의 재생횟수를 기준으로 내림차순, 고유번호를 기준으로 오름차순하여 정렬해야 하기 때문에 우선순위 큐를 통해서 노래의 고유번호를 저장하게 되면 매번 정렬하지 않아도 된다.따라서 해시맵의 키는 장르의 이름, 해시맵의 밸류는 각 음악의 고유번호를 저장하는 우선순위 큐를 선언하여 장르별 노래 리스트를 먼저 선언해보자.입출력 예를 해시맵에 넣게 되면 다음과 같은 형태가 될 것이다classic - 3, 0, 2pop - 4, 1각 장르별로 총 재생횟수를 해시맵을 통해서 구한다classic - 1900pop - 3100해시맵의 밸류를 기준으로 하여 장르명을 내림차순 정렬하도록 하기 위해서 해시맵의..
[프로그래머스] 소수 찾기 - 자바
·
TIL/알고리즘
문제 설명 문제 풀이String으로 주어진 숫자의 각 자리를 종이 조각으로 생각하고, 가능한 모든 숫자를 만들어서 소수인지 판별한다.이 때, 모든 종이 조각을 활용해서 숫자를 만들 필요는 없고, 일부만 활용해도 된다주어진 종이 조각을 활용하여 가능한 모든 숫자를 만드는 방법은 DFS를 활용할 수 있다이 때 수를 저장하는 자료구조를 HashSet으로 하게 되면 11, 011과 같이 중복되는 숫자를 제거할 수 있을 것이다DFS 방식만약 현재 인자가 "" 비어있는 문자열이 아니라면, set에 추가한다모든 종이 조각에 대하여 순회하면서, 각 종이 조각을 사용하지 않았다면 해당 종이 조각을 사용했다고 표시하고, 현재 문자열에 해당 종이 조각의 값을 이어붙여준 값을 DFS로 전달한다DFS에서 돌아왔다면 해당 종이 ..
[프로그래머스] 신고 결과 받기 - 자바
·
TIL/알고리즘
문제 설명 제한사항입출력 예 문제 분석신고 내용을 저장하는 해시 맵과 신고 내용을 바탕으로 각 사용자에게 몇 번 메일이 가야하는지 값을 저장하는 해시맵 2가지를 활용해서 풀 수 있을 것 같다.동일한 신고 내용은 1번만 저장할 수 있다는 점에 유의해야 한다신고 내용을 저장하는 해시 맵에 대해서 먼저 생각해보자신고 내용에 대한 핵심은 특정 인물이 몇번 신고를 받았는가? 와 해당 인물을 누가 신고했는가? 이다.따라서 해시 맵의 키를 신고 받은 사람의 이름, 해시 맵의 밸류를 신고 한 사람들을 저장하는 해시셋으로 설정하면 좋을 것 같다셋을 활용하는 이유는 한 인물에 대해서 한 사람이 한 번만 신고할 수 있기 때문이다이 규칙에 따라서 입출력 예시를 해시맵으로 정리했을 때 다음과 같다// 입출력 1번의 report..
[프로그래머스] 기능 개발
·
TIL/알고리즘
문제 분석큐를 활용해서 큐 내부에 있는 원소들이 기준을 충족하는지 확인하고, 원소를 알맞게 제거할 수 있는지풀이첫번째 풀이 - 모든 날짜를 반복 ( 완전 탐색..? )배포가 될 수 있는지 확인하는 기준은 다음과 같다작업진도(progress) + 작업속도(speed) * 날짜(day) >= 100정말 문제의 과정을 시뮬레이션 하듯 로직을 짤 수 있다큐에 작업 진도와 작업 속도 모두 넣는다날짜를 선언해서 매일 배포가 가능한 기능을 모두 배포한다day = 1;while ( 큐가 비어있지 않은 동안 ) { count = 0 ; while ( 큐가 비어있지 않다 && 큐의 피크 원소가 배포가 가능하다면 ){ 큐에서 원소 뺴내기 count++; } // 이 과정을 통해 당일..