문제설명 소스코드 import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); int arr[] = new int[10]; int sum = 0; for(int i = 0; i 100) { if(Math.abs(100-temp) >= Math.abs(100-sum)) System.out.print(sum); else System.ou..
문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Comparator; import java.util.PriorityQueue; public class Main { public static void main(String[] args) throws Exception { PriorityQueue absHeap = new PriorityQueue(new Comparator() { @Override public int compare(Integer o1, Integer o2) { if(Math.abs(o1) == Math.abs(o2)) return Integer.compare(o1, o2); //절..
문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Collections; import java.util.PriorityQueue; public class Main { public static void main(String[] args) throws Exception { PriorityQueue maxHeap = new PriorityQueue(Collections.reverseOrder()); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder()..
문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.PriorityQueue; public class Main { public static void main(String[] args) throws Exception { PriorityQueue maxHeap = new PriorityQueue(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); for(int i = 0..
힙과 우선순위 큐 결론부터 말하자면, 우선순위 큐는 ADT(Abstract Data Type) 이고, 힙은 우선순위 큐의 개념을 구현한 것이다. ADT 구현하고자 하는 구조에 대해 구현 방법은 명시하지 않고 자료구조의 특성들과 어떤 기능이 있는지를 설명하고 나열한 것. 즉, 구현은 하지 않고 어떠한 기능과 어떠한 작동원리를 가지는지 추상적으로 설명한 것이다. 우선순위 큐는 단순 FIFO구조가 아니라, 각 큐에 들어오는 원소마다 우선순위가 정해져 있다. 만약, 우선순위가 높은 순서대로 큐에서 제거하기로 했다면 큐에 들어온 순서대로 원소가 제거되는 것이 아니라 우선순위가 높은 순서대로 큐에서 제거된다. 만약, 우선순위가 낮은 순서대로 큐에서 제거하기로 했다면 큐에 들어온 순서대로 원소가 제거되는 것이 아니라..
문제설명 소스코드 import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); while(sc.hasNextInt()) { int n = sc.nextInt(); int k = sc.nextInt(); int ans = n; int stamps; while(n >= k) { stamps = n / k; ans += stamps; n = stamps + (n % k); } System.out.println(ans); } } } 설명 코드가 간단하기 때문에 코드에 대한 설명은 필요없을 것 같다. 문제를 보면 테스트케이스..
문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static int priority(char operator) { if (operator == '+' || operator == '-') return 1; if (operator == '*' || operator == '/') return 2; return 0; } public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(Syst..
문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Stack; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Stack operand = new Stack(); HashMap hash = new HashMap(); int N = Integer.parseInt(br.readLine()); String input = br.rea..