목록2024/02 (11)
delpho
Think 1. 컬렉션에 있는 우선순위 큐를 사용할 수 있으면 풀 수 있는 문제다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class test { static int N; static PriorityQueue pq = new PriorityQueue(Collections.reverseOrder()); static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringBuilder sb = new StringBuilder(); pub..
Think 1. 기초 BFS 문제다. 2. 하루씩 익은 토마토들이 주변 토마토들에게 영향을 끼쳐서 익게 만드려면, 아래 그림처럼 애초에 큐에 넣어놓고 poll 하면서 풀면 된다. (토마토 클래스를 정의해서 얼마나 지났는지 따로 관리해주자) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class test { static int N, M; static Tomato[][] map; static boolean[][] isVis..
Think 괄호를 활용해서 최솟값을 만들 수 있는 방법은, - 값을 최대로 만들도록 해야한다. 예를들어, 20+30-10+50-70 라면, 20+30-(10+50)-(70) 와 같이 만들어주어야 한다. 그래서 처음 구현 아이디어는, 해당 식에 직접 괄호 문자를 추가한 후, 하나씩 파싱하며 값을 계산했는데 구현이 넘 복잡해지고 틀리기도 했다. 구글링을 통해 풀이를 살펴보니, StringTokenizer나 String.split()을 통해 - 부호를 기준으로 문자열들을 나눈 후, 각각 문자열을 + 부호로 또 나눠서 더해준 뒤 값을 계산한다. 나뉜 문자열의 처음 값은 + 값이기 때문에 이 값을 처리해야하는데, sum 변수를 Integer.MAX_VALUE로 초기화 후 if문을 통해 저장한다. sum = 0으로..