Tech-blog
-
백준 : 유기농 배추 - 1012번 (java)Tech-blog/Algorithm 2023. 3. 2. 21:57
import java.util.*; public class OrganicCabbage { static int[][] map; static boolean[][] visited; static int[] dx = {0, 0, 1, -1}; static int[] dy = {1, -1, 0, 0}; static int N, M, K; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); // 테스트 케이스의 개수 while (T-- > 0) { M = sc.nextInt(); // 가로 길이 N = sc.nextInt(); // 세로 길이 K = sc.nextInt(); // 배추가 심어..
-
백준 - 이장님초대 - 9237 (java)Tech-blog/Algorithm 2023. 3. 2. 00:41
문제 농부 상근이는 마당에 심기 위한 나무 묘목 n개를 구입했다. 묘목 하나를 심는데 걸리는 시간은 1일이고, 상근이는 각 묘목이 다 자라는데 며칠이 걸리는지 정확하게 알고 있다. 상근이는 마을 이장님을 초대해 자신이 심은 나무를 자랑하려고 한다. 이장님을 실망시키면 안되기 때문에, 모든 나무가 완전히 자란 이후에 이장님을 초대하려고 한다. 즉, 마지막 나무가 다 자란 다음날 이장님을 초대할 것이다. 상근이는 나무를 심는 순서를 신중하게 골라 이장님을 최대한 빨리 초대하려고 한다. 이장님을 며칠에 초대할 수 있을까? 입력 입력은 두 줄로 이루어져 있다. 첫째 줄에는 묘목의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄에는 각 나무가 다 자라는데 며칠이 걸리는지를 나타낸 ti가 주어진다. (..
-
백준 : 부분 문자열 - 6550번 (java)Tech-blog/Algorithm 2023. 3. 2. 00:04
문제 2개의 문자열 s와 t가 주어졌을 때 s가 t의 부분 문자열인지 판단하는 프로그램을 작성하라. 부분 문자열을 가지고 있는지 판단하는 방법은 t에서 몇 개의 문자를 제거하고 이를 순서를 바꾸지 않고 합쳤을 경우 s가 되는 경우를 이야기 한다. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다. 출력 입력된 s와 t의 순서대로 s가 t의 부분 문자열인 경우 Yes라 출력하고 아닐 경우 No라고 출력한다. 예제 입력 1 복사 sequence subsequence person compression VERDI vivaVittorioEmanueleReDiItalia ca..
-
백준 : 다익스트라 - 파티 - 1238번 (java)Tech-blog/Algorithm 2023. 2. 28. 12:30
다익스트라가 아직 너무 어려워서 문제 정답을 보고 이해하는 느낌으로 풀었다... 아래 블로그에 설명이 잘 되어있어서 이번에는 이런식으로 풀고 다음에 다시 풀어볼 예정!! https://velog.io/@lifeisbeautiful/Java-%EB%B0%B1%EC%A4%80-1238%EB%B2%88-%ED%8C%8C%ED%8B%B0-with-%EC%9E%90%EB%B0%94 [Java] 백준 1238번 파티 with 자바 [Java] 백준 1238번 파티 with 자바 velog.io import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class..
-
백준 : 다익스트라 - 최단경로 - 1753번 (java)Tech-blog/Algorithm 2023. 2. 27. 15:17
나중에 다시 한번 풀어볼 예정.. import java.io.*; import java.util.*; public class ShortRoute { static ArrayList[] list; private static int v; private static int e; private static int start; private static int[] distance; private static int INF = Integer.MAX_VALUE; public static void main(String[] args) { Scanner sc = new Scanner(System.in); v = sc.nextInt(); //정점개수 e = sc.nextInt(); //간선개수 start = sc.nextIn..
-
백준 : 거스름돈 - 14916 (java)Tech-blog/Algorithm 2023. 2. 21. 15:10
문제 춘향이는 편의점 카운터에서 일한다. 손님이 2원짜리와 5원짜리로만 거스름돈을 달라고 한다. 2원짜리 동전과 5원짜리 동전은 무한정 많이 가지고 있다. 동전의 개수가 최소가 되도록 거슬러 주어야 한다. 거스름돈이 n인 경우, 최소 동전의 개수가 몇 개인지 알려주는 프로그램을 작성하시오. 예를 들어, 거스름돈이 15원이면 5원짜리 3개를, 거스름돈이 14원이면 5원짜리 2개와 2원짜리 2개로 총 4개를, 거스름돈이 13원이면 5원짜리 1개와 2원짜리 4개로 총 5개를 주어야 동전의 개수가 최소가 된다. 입력 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. 출력 거스름돈 동전의 최소 개수를 출력한다. 만약 거슬러 줄 수 없으면 -1을 출력한다. 예제 입력 1 복사 13 예제 출력 ..
-
백준 : greedy - 30 - 10610번(java)Tech-blog/Algorithm 2023. 2. 21. 14:47
문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 예제 입력 1 복사 30 예제 출력 1 복사 30 예제 입력 2 복사 102 예제 출력 2 복사 210 예제 입력 3 복사 2931 예제 출력 3 복사 -1 예제 입력 4 복사 80875542 예제 출력 4 복사 88755420 ..
-
백준 : greedy - 기타줄 - 1049번 (java)Tech-blog/Algorithm 2023. 2. 20. 12:37
문제 Day Of Mourning의 기타리스트 강토가 사용하는 기타에서 N개의 줄이 끊어졌다. 따라서 새로운 줄을 사거나 교체해야 한다. 강토는 되도록이면 돈을 적게 쓰려고 한다. 6줄 패키지를 살 수도 있고, 1개 또는 그 이상의 줄을 낱개로 살 수도 있다. 끊어진 기타줄의 개수 N과 기타줄 브랜드 M개가 주어지고, 각각의 브랜드에서 파는 기타줄 6개가 들어있는 패키지의 가격, 낱개로 살 때의 가격이 주어질 때, 적어도 N개를 사기 위해 필요한 돈의 수를 최소로 하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주어진다. ..