Development Logs/Algorithms 84

[JAVA] 프로그래머스 : 라면공장 (코딩테스트 고득점 kit > 힙(Heap))

https://programmers.co.kr/learn/courses/30/lessons/42629 코딩테스트 연습 - 라면공장 라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니�� programmers.co.kr 우선순위 큐를 이용하여 구현함 공급 물량을 내림차순으로 하여 저장하게 하였음 또한 재고가 부족한 경우에 poll() 해서 더해주도록 함 왜냐하면 결국엔 stock이 다 쓴경우에 채워서 쓰면 최소로 공급 받는 방법이 되기 때문임 추가로 우선순위 큐로 구현하였기 때문에 중간에 필요없이 공급받아야 하는 경우 또한 제외할 수 있음 import java.util.*; ..

[JAVA] 프로그래머스 : 더 맵게 (코딩테스트 고득점 kit > 힙(Heap))

https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 우선순위 큐를 사용하여 구현함 문제에 주어진 과정에 따라 알고리즘을 구현하였음 import java.util.*; // 더 맵게 // 우선순위 큐 사용 class Solution { //10^6 public int solution(int[] scoville, int K) { int answer = 0; PriorityQueue pq = new P..

[JAVA] 프로그래머스 : 베스트앨범 (코딩테스트 고득점 kit > 해쉬)

https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 �� programmers.co.kr 여러 자료구조를 연결하여 구현하였음 문제 설명 순서의 로직을 참고하여 그 순서대로 구현하려고 하였음 문제의 1번 과정인 장르별 총 플레이수 별로 저장한 자료구조와 문제의 2,3번 과정에 필요한 전체 노래 자료구조를 구현하여 각각을 정렬함 그 후 베스트 앨범에 들어갈 수 있도록 각 장르별 2곡씩 뽑음 * Comparable의 compareTo를 사용하여 내..

[JAVA] 프로그래머스 : 기능개발 (코딩테스트 고득점 kit > 스택/큐)

https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 �� programmers.co.kr 큐를 사용하여 구현함 해당 기능 완료하는데 걸리는 날을 미리 계산하여 Queue에 저장함 import java.util.*; // 기능개발 // 큐 사용(병렬 스케줄링) // 각각의 기능 개발 // 순서대로 배포 되야함 class Solution { public int[] solution(int[] progresses, int[] speeds) { ..

[JAVA] 프로그래머스 : 쇠막대기 (코딩테스트 고득점 kit > 스택/큐)

https://programmers.co.kr/learn/courses/30/lessons/42585 코딩테스트 연습 - 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레� programmers.co.kr 스택을 이용하여 구현하였음 쇠막대기가 잘라지는 규칙을 찾아내면 쉽게 구현할 수 있는 문제임 먼저 () 나오는 부분은 레이저 이므로 l로 바꿔서 처리하였음 그리고 스택에 넣으면서 1. (가 나오면 push 해주고 2. l이 나오면 레이저가 지금까지 쌓인 ( 갯수 만큼 쇠막대기를 자름 3. )이 나오면 pop을 해주고 쇠막대기 끝 부분이므로 answer ++ 해줌 i..

[JAVA] 프로그래머스 : 주식가격 (코딩테스트 고득점 kit > 스택/큐)

https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 첫 번째 풀이 큐를 이용하여 구현하였음 각 주식 가격이 언제까지 떨어지지 않는지 시간을 재는 방식을 이용함 코드 import java.util.*; // 주식가격 class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.leng..

[JAVA] 프로그래머스 : 프린터 (코딩테스트 고득점 kit > 스택/큐)

https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린�� programmers.co.kr 큐를 이용하여 구현하였음 flag를 둬서 뒤의 순서에 우선 순위가 더 높은 경우가 있는지 없는지 체크하고 그에 따른 로직을 구현하였음 location 위치를 계속 잘 따라가주고 몇 번째로 인쇄되는지 값을 가지는 answer 변수는 프린터 큐에서 poll이 될때마다 증가시켜줌 import java.util.*; // 프린터 // 내가 인쇄를 요청한 문서가 몇 번째..

[JAVA] 프로그래머스 : 다리를 지나는 트럭 (코딩테스트 고득점 kit > 스택/큐)

https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 첫 번째 풀이 해결 방안 큐를 제대로 이해하고 있으면 풀 수 있는 문제였음 큐와 문제의 주어진 조건을 이용해서 푸는 문제. 각 트럭이 다리 길이 갔을 때 나가는 걸 체크하기 위해 enterTime을 활용 코드 import java.util.*; // 다리를 지나는 트럭 // 모든 트럭이 다리를 건너는데 걸리는 시간 class Solution ..

[JAVA] 프로그래머스: 위장 (코딩테스트 고득점 kit > 해쉬)

https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 수학적인 접근이 필요한 문제임 의상 종류의 수와 종류들의 각 갯수를 가지고 풀 수 있는 문제임 해쉬를 이용해서 각 의상 종류의 갯수들을 저장해줌 그리고 경우의 수를 구해줌 * for(String key : keys) 는 keys에 있는 값들을 key값에 넣는 것이다. (keys에 값이 더이상 없을때까지) import java.util.*; //위장 // [의상의 이름, 의상의 종류] // 최소 한 개 이상의 의상 // 서로 다른 옷의 조합의 수 return // 같은 종류의 의상은 조합 불가 class Solution { public int sol..

[JAVA] 프로그래머스: 전화번호 목록 (코딩테스트 고득점 kit > 해쉬)

https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조�� programmers.co.kr 해결 방안 String 라이브러리 활용이 중요함 접두어인 경우이므로 startsWith 함수를 썼으며 indexOf == 0 일 경우를 확인하는 방법도 가능함 코드 import java.util.*; //전화번호 목록 // 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false, 그렇지 않으면 true class Solution { public boo..