그리디 알고리즘 31

[Java] 백준 풀기 1049 - 기타줄

자바 백준 1049번실버 4https://www.acmicpc.net/problem/1049     문제 보기분류: 수학, 그리디 알고리즘     코드 풀이import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 필요한 기타줄 개수 N과 브랜드의 개수 M을 입력 int N = sc.nextInt(); int M = sc.nextInt(); // 각 브랜드의 패키지 가격과 낱개 가격을 저장할 배열 선언 int[] packagePrices = new int[M]; int[] singlePr..

공부하기/백준 2024.06.23

[Java] 백준 풀기 15786 - Send me the money

자바 백준 15786번 브론즈 1 https://www.acmicpc.net/problem/15786 15786번: Send me the money 입력의 첫째 줄에 석규가 기억하는 원본 알파벳의 수 N(1 ≤ N ≤ 100)과 포스트잇의 개수 M(1 ≤ M ≤ 1000)이 주어진다. 다음 줄에 길이가 N인 알파벳 대문자로 이루어진 문자열 S가 주어진다. 이 후 M www.acmicpc.net 문제 보기 분류: 구현, 그리디 알고리즘, 문자열 코드 보기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 기억하는 알파벳의 수(N)와..

공부하기/백준 2023.12.26

[Java] 백준 풀기 14916 - 거스름돈

자바 백준 14916번 실버 5 https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 문제 보기 분류: 수학, 다이나믹 프로그래밍, 그리디 알고리즘 코드 보기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 사용자로부터 거스름돈 금액 입력 받기 int n = sc.nextInt(); // 최소 동전 개수 구하기 int result = getMinCoins(n); // 최소 동전 개수 출력 Sy..

공부하기/백준 2023.11.29

[Java] 백준 풀기 20115 - 에너지 드링크

자바 백준 20115번 실버 3 https://www.acmicpc.net/problem/20115 20115번: 에너지 드링크 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한 www.acmicpc.net 문제 보기 분류: 그리디 알고리즘 문제 풀기 두 개의 드링크를 비교하여 합칠 때 많은 양을 반으로 나누어 합치게 되면 초기 많은 양의 캔 보다 작아진다. 따라서 모든 두 비교 대상에 대해 적은 양 만을 선택해 합쳐야 한다. 즉, 모든 드링크에서 가장 많은 것만 온전히 합치고 나머지들은 반으로 나누어 합치는 모습이 되므로 정렬을 한 후 최댓값 그리고 나머지로 분리하여..

공부하기/백준 2023.09.13

[Java] 백준 풀기 11256 - 사탕

자바 백준 11256번 실버 5 https://www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 정렬 문제 풀기 상자의 가로 세로를 입력받아 크기를 구하여 List에 저장하고 List의 value를 오름차순 정렬한다. 정렬된 List의 마지막 value부터 가져와 전체 사탕의 개수에서 차감한다. 이 작업을 사탕의 개수가 0이 될 때까지 반복하여 그 횟수인 필요 상자의 최소 개수를 출력한다. 코드 보기 import java.util..

공부하기/백준 2023.09.12

[Java] 백준 풀기 28014 - 첨탑 밀어서 부수기

자바 백준 28014번 브론즈 3 https://www.acmicpc.net/problem/28014 28014번: 첨탑 밀어서 부수기 첫째 줄에 첨탑의 개수 $N$이 주어진다. $(1\leq N\leq 5\,000\,000)$ 둘째 줄에는 앞에서부터 차례대로 첨탑의 높이 $H_1, H_2, \cdots, H_n (1\leq H_i\leq 1\,000\,000)$ 이 주어진다. 입력으로 주어지는 모든 수는 정 www.acmicpc.net 문제 보기 분류: 그리디 알고리즘 문제 풀기 모든 첨탑의 높이를 StringTokenizer와 BufferdReader를 이용하여 array에 입력받는다. index = 1 부터 시작하여 이전 index의 value가 현재 index의 value보다 작거나 같으면 카운트..

공부하기/백준 2023.09.11

[Java] 백준 풀기 14487 - 욱제는 효도쟁이야

자바 백준 14487번 브론즈 2 https://www.acmicpc.net/problem/14487 14487번: 욱제는 효도쟁이야!! 욱제는 KOI를 망친 기념으로 부모님과 함께 코드게이트 섬으로 여행을 떠났다. 코드게이트 섬에는 오징어로 유명한 준오마을(심술쟁이 해커 임준오 아님), 밥으로 유명한 재훈마을, 영중마을 등 www.acmicpc.net 문제 보기 분류: 구현, 그리디 알고리즘 문제 풀기 서로 제일 이동 비용이 큰 두 마을을 시작과 끝으로 잡으면 그 두 마을을 연결하는 길은 가지 않아도 되며 최소한의 이동경비를 기대할 수 있다. 따라서 제일 이동 비용이 큰 경우를 제외한 나머지 이동 경로 비용만 합하면 되기 때문에 오름차순 정렬을 하여 마지막 index만 빼고 모두 누적합한다. 코드 보기..

공부하기/백준 2023.09.01

[Java] 백준 풀기 5545 - 최고의 피자

자바 백준 5545번 실버 3 https://www.acmicpc.net/problem/5545 5545번: 최고의 피자 첫째 줄에 토핑의 종류의 수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 도우의 가격 A와 토핑의 가격 B가 주어진다. (1 ≤ A, B ≤ 1000) 셋째 줄에는 도우의 열량 C가 주어진다. (1 ≤ C ≤ 10000) 다음 줄 www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 정렬 문제 풀기 도우의 1원당 열량을 초기값으로 지정한다. 그 후 토핑을 오름차순 정렬하여 열량이 높은 것부터 하나씩 합하면서 단위 열량을 매번 구하면서 최대값을 업데이트 저장한다. 코드 보기 import java.util.Arrays; import java.util.Scanner; cl..

공부하기/백준 2023.08.28

[Java] 백준 풀기 13164 - 행복 유치원

자바 백준 13164번 골드 5 https://www.acmicpc.net/problem/13164 13164번: 행복 유치원 입력의 첫 줄에는 유치원에 있는 원생의 수를 나타내는 자연수 N(1 ≤ N ≤ 300,000)과 나누려고 하는 조의 개수를 나타내는 자연수 K(1 ≤ K ≤ N)가 공백으로 구분되어 주어진다. 다음 줄에는 원생들 www.acmicpc.net 문제 보기 분류: 정렬, 그리디 알고리즘 문제 풀기 최소 비용을 만들기 위해서 인접한 키 차이를 확인하고 그 크기가 큰 인원은 서로 분리시켜 각자의 그룹으로 만든다. 따라서 오름차순 정렬된 사람들에서 인접한 두 인원의 키차이를 구하고 이를 오름차순 정렬하여 가장 큰 차이값들부터 제거하는 형식(독자 그룹)으로 그룹을 지정한다. 그 그룹들의 키 ..

공부하기/백준 2023.08.26

[Java] 백준 풀기 1448 - 삼각형 만들기

자바 백준 1448번 실버 3 https://www.acmicpc.net/problem/1448 1448번: 삼각형 만들기 첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다 www.acmicpc.net 문제 보기 분류: 수학, 그리디 알고리즘, 정렬 문제 풀기 입력된 빨대를 array에 모두 저장 후 오름차순 정렬한다. 정렬된 빨대의 길이를 마지막 index부터 시작하여 세 개씩 묶어 삼각형 생성 조건이 되는지 확인한다. 두 변의 길이의 합이 가장 긴 변의 길이보다 길다면 삼각형이 형성이 되고, 변의 길이가 가장 긴 마지막 index부터 조사..

공부하기/백준 2023.08.21