본문 바로가기

Programmers56

알고리즘(라면 공장, 가장 큰 정사각형 찾기) [라면 공장] * 로직 stock 값보다 같거나 큰 날짜를 우선순위 큐에 집어넣는다 여기서 우선순위 큐 정렬 방식은 공급일이 긴 순으로 내림차순이다 (그래야 최소 일수로 채워나갈 수 있기 때문에) 큐에서 꺼내어 stock에 누적시켜주고, 답을 카운팅한다 import java.util.Comparator; import java.util.PriorityQueue; class Solution { public int solution(int stock, int[] dates, int[] supplies, int k) { int answer = 0; int idx=0; PriorityQueue priorityQueue = new PriorityQueue(Comparator.reverseOrder()); while .. 2020. 4. 20.
알고리즘(숫자 야구) [숫자 야구] * 로직 1~9까지 숫자 중 3가지 수를 뽑는 모든 경우를 구한다(순열) 숫자가 만들어질 때마다 baseball 질문 개수만큼 비교를 진행한다 만약 질문의 결과와 일치하지 않는다면 false 모두 다 일치한다면 true 모두 다 일치하게되면 답을 카운팅한다 // 숫자야구 public class Problem_NumberBaseball { static boolean[] checked; static int[] arr; static int N; static int R; static int result; public static void main(String[] args) { int[][] baseball = { {123, 1, 1}, {356, 1, 0}, {327, 2, 0}, {489, 0,.. 2020. 4. 17.
알고리즘(위장) [위장] * 로직 우선 종류에 맞게끔 옷들을 해쉬맵에 보관한다 각각 종류에는 옷들의 개수가 존재한다 단순하게 생각해보면 결국 모든 경우의 수를 구한다 nC1 + nC2 + ... + nCr (최소 한벌은 입어야 하기 때문에) 여기서 좀 더 발전시켜 생각해보면 (각 종류에 존재하는 옷의 개수 + 1)을 함으로써 해당 종류의 옷을 선택하지 않은 경우를 추가할 수 있다 (A종류의 옷+1) * (B종류의 옷+1) * (C종류의 옷+1)을 하게되면 3가지 종류에 존재하는 옷들로 만들 수 있는 모든 경우의 수를 구할 수 있게된다 주의할 점은, 모두 옷을 선택하지 않은 경우가 포함되기 때문에 -1을 해줌으로써 답을 구할 수 있게된다 //위장 import java.io.*; import java.util.*; clas.. 2020. 4. 15.