CountDownLatch의 정의 하나 이상의 스레드가 다른 스레드에서 수행 중인 작업이 완룓될 때까지 대기할 수 있는 동기화 보조 기능이라고 생각하시면 됩니다. CountDownLatch는 다양한 용도로 사용할 수 있습니다. CountDownLatch는 1개의 카운트로 초기화된 CountDownLatch는 on/off Latch 또는 게이트 역할을 해줍니다. 호출되는 모든 스레드는 countDown()을 호출하는 스레드에 의해 열릴 때까지 게이트에서 대기합니다. N으로 초기화 된 CountDownLatch는 N개의 스레드가 일부 작업을 완료하거나 일부 작업이 N번 완료될 때까지 스레드 하나를 대기시키는 데 사용할 수 있습니다. CountDownLatch의 유용한 속성은 countDown을 호출하는 스레..
[ 목차 ] 1. 구름찾기깃발 문제 2. 풀이 3. 느낀점 구름찾기 깃발 문제 구름 찾기 게임은 한 변의 길이가 N 인 격자 모양의 게임판 M 에서 진행하는 게임이다. 게임판의 일부 칸에는 구름이 숨겨져 있고, 게임판에 숨겨진 모든 구름의 위치를 찾으면 게임에서 승리할 수 있다. 구름 찾기 게임의 제작자인 플레이어는 조금 더 쉽게 구름을 찾을 수 있도록 도와주는 깃발을 게임판 위에 설치하려고 한다. 깃발은 구름이 없는 칸이면서, 상하좌우와 대각선으로 인접한 여덟 칸 중 구름이 하나 이상 있는 칸에만 설치할 수 있다. 이렇게 설치한 깃발에는 인접한 여덟 칸 중 구름이 있는 칸의 개수에 해당하는 값이 적힌다. 플레이어는 깃발을 세울 수 있는 모든 칸에 깃발을 세워두었다. 문득, 플레이어는 깃발 중 값이 K ..
[ 목차 ] 1. ☁️ 구름톤 챌린지 문제 (이진수 정렬) 2. 📝 이진수 정렬 풀이 3. 🧐 느낀점 ☁️ 구름톤 챌린지 문제 (이진수 정렬) N개의 10진수 정수가 주어진다. 플레이어가 정수를 그냥 정렬하는 것은 너무 쉽기 때문에, 아래 기준에 따라 정수를 정렬하기로 한다. 1.. 10진수 정수를 2진수로 나타냈을 때, 2진수에 포함된 1의 개수를 기준으로 내림차순 정렬한다. 2. 1의 개수가 같다면, 원래 10진수를 기준으로 내림차순 정렬한다. 📝 이진수 정렬 풀이 우선, 주어진 기준으로 정렬할 수 있도록 순위를 결정 짓는 공식을 작성해야합니다. 이때 저는 우선순위 큐를 사용해 값을 넣을때마다 정렬 할 수 있도록 했습니다. List를 사용해도 되지만 List에 넣고, Sort하는 메소드를 호출해야되서..
[ 목차 ] 1. 구름톤 챌린지 문제 완벽한 햄버거 만들기 2. 풀이 3. 느낀점 📝 문제 완벽한 햄버거 만들기 풀이 가장 높은 재료(중간지점)를 기준으로 내림차순이면 모든 재료값을 더해주면 끝나는 문제. 내림차순이 아닐 경우에는 0을 출력하면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; /** * 완벽한 햄버거 만들기 (195686) * 11'50" */ public class Solution { public static void main(String[] args) throws Exception { try (BufferedReade..
📝 문제 풀이 if문 조건식 사용 import java.io.*; class Main { public static void main(String[] args) throws Exception { try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { System.out.print(solution(reader)); } catch (IOException e) { e.printStackTrace(); } } static int solution(BufferedReader br) throws IOException{ int n = Integer.parseInt(br.readLine()); int answer = 0; fo..
📝 문제 풀이 import java.io.*; import java.util.Arrays; class Main { private static final int MINUTES = 60; private static final int HOURS = 24; public static void main(String[] args) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { System.out.print(solution(reader)); } catch (IOException e) { e.printStackTrace(); } } static String solution(BufferedReader br) thr..