본문 바로가기

분류 전체보기147

[프로그래머스] 더 맵게 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 한다. 섞은 스코빌 지수 = 가장 낮은 스코빌 지수 + (두 번째로 낮은 스코빌 지수 * 2) 2. 풀이 PriorityQueue 를 이용한 문제 풀이 음식의 스코빌 지수를 오름차순으로 유지하기 위해 PriorityQueue 로 나타낸다. 음식의 개수가 2개 미만이 되면 더이상 섞을 수 없으므로 -1을 리턴한다. PriorityQueue 를 통해 제일 작은 스코빌 지수가 K 보다 작으면 음식을 섞고 다시 PriorityQueue 에 추가한다. 3. 코드 import java.util.*; class Solution { public int .. 2021. 11. 25.
[프로그래머스] 프린터 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 내가 요청한 문서는 몇번째로 인쇄되는지 return 한다. 2. 풀이 Queue 를 이용한 문제 풀이 입력 순서대로 반환하면 되기 때문에 대기목록을 Queue 로 나타낸다. 남아 있는 인쇄 작업의 중요도를 배열 arr 로 저장한다. 대기목록(Queue)에서 하나의 작업을 poll()하고, location-- 을 한다. 그리고 남아 있는 인쇄 작업 중 자신보다 중요도가 높은 것이 있는지 확인한다. 자신보다 중요도가 높은 것이 있을 경우 다시 대기목록.. 2021. 11. 25.
[프로그래머스] 기능개발 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 배포 순서에대로 작업의 진도 (progresses)와 작업의 속도 (speeds)를 통해 작업이 완료되었을 때 몇개의 작업이 배포되는지 return 한다. 뒤에 있는 작업이 먼저 완료되면 앞의 작업이 완료될 때 까지 기다렸다가 같이 배포된다. 배포는 하루에 1번 가능하다. 2. 풀이 Queue 를 이용한 문제 풀이 입력 순서대로 반환하면 되기 때문에 작업의 완료 시간을 Queue 로 나타낸다. progresses 와 speeds 를 통해 작업이 완료되는 시간을 계산하고 Queue에 넣는다. 작업이 완료되는 시간을 계산할 때 소수점을 통해 반올림을 해야하므로 100.0 을 통해 타입은 int 가 아닌 double 을 사용한다. .. 2021. 11. 25.
[프로그래머스] 주식가격 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지 구한다. 2. 풀이 스택 를 이용한 문제 풀이 주식이 떨어지지 않은 기간은 ans배열로, 주식이 떨어지지 않은 기간을 구하기 위해 stack을 사용한다. 반복문을 돌면서 현재 주식 가격을 stack에 push한다. push 전에 현재 주식가격이 스택의 맨 위에 있는 주식보다 작으면 현재 주식과 스택의 맨 위 주식의 시간을 구한다. 스택의 맨위 주식을 pop한다. 반복문이 끝나고 남아있는 주식은 끝까지 가격이 떨어지지 않은 주식이므로 prices배열의 길이에서 해당 주식의 위치를 뺀 값이다. 3. 코드 import.. 2021. 11. 25.
[프로그래머스] 다리를 지나는 트럭 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건넌다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는 알아내야 한다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딘다. 2. 풀이 Queue 를 이용한 문제 풀이 트럭은 다리를 대기하는 순서대로 건너기 때문에 다리를 건너는 트럭을 Queue로 나타낸다. 다리를 건너고 있는 트럭이 나갈 시간일 때 Queue에서 트럭의 정보를 뺀다. 다리가 견딜수 있는 무게에서 트럭의 무게를 더한다. 다리가 견딜 수 있는 무게가 대기 트럭의 무게보다 클 때 Queue에 트럭의 정보{트럭의 무게, 다리에서 나갈 시간}를 .. 2021. 11. 25.
[프로그래머스] K번째수 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구한다. 예를 들어, array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3 2. 풀이 정렬 을 이용한 문제 풀이 Arrays.copyOfRange()를 이용해 배열을 자른다. Arrays.sort()를 이용해 정렬을 한다. 3. 코드 import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int i=0; i 2021. 11. 25.
[프로그래머스] H-Index [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 2. 풀이 정렬 을 이용한 문제 풀이 주어진 숫자 배열을 Arrays.sort()를 이용해 오름차순으로 정렬을 한다. for문을 통해 현재 인용횟수와 남은 논문의 수를 비교하여 H-Index를 구한다. 3. 코드 import java.util.*; class Solution { public int solution(int[] citations) { int answer = 0; int N = citations.length; Arrays.sort(citations); for(int i=0; i.. 2021. 11. 25.
[프로그래머스] 가장 큰 수 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 구한다. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 2. 풀이 정렬 을 이용한 문제 풀이 주어진 숫자 배열을 문자 배열로 변환한다. Arrays.sort()를 이용해 내림차순으로 정렬을 한다. 내림차순 : (String a, String b) -> { return (b+a).compareTo(a+b); 오름차순 : (String a, String b) -> { return (a+b).compareTo(b+a); 정렬한 배.. 2021. 11. 25.
[프로그래머스] 베스트앨범 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 genres는 노래의 장르를 나타내는 문자열을 plays는 노래별 재생 횟수를 나타낸다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 모든 장르의 재생 횟수는 다르고, 장르에 속한 곡이 하나라면, 하나의 곡만 수록한다. 2. 풀이 해시 를 이용한 문제 풀이 key는 장르를 value는 총 재생 횟수를 나타내는 Hash를 생성한다. key는 장르를 value는 {고유번호, 재생횟수}를 나타낼 수 있는 Hash를 생성한다. 재생횟수 내림차순 고유번호 오름차순 장르별 총 재생 횟수를 내림차순.. 2021. 11. 25.