프로그래머스 3

[프로그래머스] 베스트앨범 (LEVEL 3)

문제링크 문제접근 ❓ HashMap 장르별 재생곡들을 저장하기위해서 구조를 가지는 Map 자료구조를 사용 PriorityQueue sort 메소드를 따로 사용하지 않고 재생횟수를 정렬하기 위해서 사용 Solution import java.util.Map; import java.util.HashMap; import java.util.PriorityQueue; import java.util.Collections; import java.util.List; import java.util.ArrayList; class Solution { class Music implements Comparable { int no; int play; public Music(int no, int play) { this.no = no..

[프로그래머스] 오픈채팅방(LEVEL 2)

문제링크 문제접근 ❓ HashMap 오답노트 ❓ 오답 코드 import java.util.*; class Solution { List answers; // 채팅방 입/퇴장 기록 리스트 Map idMap; // 채팅방에 접속한 이력이 있는 아이디 map final String COME_IN = "님이 들어왔습니다."; final String GO_OUT = "님이 나갔습니다."; public String[] solution(String[] record) { String[] answer = {}; answers = new ArrayList(); idMap = new HashMap(); for (String s : record) { String[] arr = s.split(" "); // arr[0] : 명령..

[프로그래머스] 입국심사(LEVEL 3)

문제링크 문제접근 ❓ 이분탐색 💡 심사하는 시간은 1부터 max(times[i]) * n 까지 존재한다. 모든 사람을 심사할 수 있는 최소 시간을 찾는 것이 이 문제의 해답이다. 1 ~ max(times[i])*n 사이의 적절한 값을 찾아야 하고 상수값의 범위가 10억 이기때문에 굉장히 크게 주어질 수 있는 상황이다. 따라서 최대한 시간을 단축해야하는 문제이다. 그래서 이진탐색으로 1 ~ max(times[i])*n 사이에서 값을 찾는 것이다. mid 값을 통해서 mid 시간안에 처리할 수 있는 총 사람수를 구하고 (mid / times[i] 연산을 통해서) [해당시간안에 처리할 수 있는 사람 수] 와 [목표 사람수]를 비교한다. [처리할수 있는 사람수]가 [처리해야되는 사람수]보다 많으면 시간을 너무 ..