그리디 알고리즘 4

백준-1541번/잃어버린 괄호 (java)

문제 이해 숫자, +와 - 로 이루어진 계산식에서 괄호를 넣었을때의 최솟값을 구하는 문제이다.이 문제를 풀기 위해서는 식에서 최솟값이 되는 경우를 찾아야 한다. ex)55-50+40 최솟값이 되는 식 ==> 55-(50+40) 10+20+30+40 최솟값이 되는 식 ==> (10+20+30+40) 50+40-60+40 최솟값이 되는 식 ==> (50+40)-(60+40) 식이 최솟값이 되도록 괄호를 만드려면 "-"를 기준으로 식을 괄호로 나눠주면 된다. 문제 해결 ex) 50+40-60+40 1) 식을 -를 기준으로 나눠주기String input =scanner.nextLine();String[] sub = input.split("-"); (50+40) , (60+40) 2) 괄호안의 숫자들을 +를 기준..

알고리즘/백준 2024.10.01

백준-11399번/ATM (java)

문제 이해 N명의 사람이 ATM앞에 줄을 서서 돈을 뽑는데 각 사람마다 뽑는데 걸리는 시간이 다르다. EX) 입력이 아래와 같을때 최소로 걸리는 시간은 다음과 같이 구할 수 있다.53 1 4 3 2 1) 오름 차순으로 정렬 ==> 돈을 뽑는데 적은 시간이 걸리는 사람을 먼저 뽑게해서 마지막 사람이 기다리는 시간을 최소화1 2 3 3 4 이렇게 정렬을 하고 돈을 뽑는데 걸리는 시간을 구해주면 다음과 같다. 1+(1+2)+(1+2+3)+(1+2+3+3)+(1+2+3+3+4) = 32 문제 해결 우선 배열에 걸리는 시간들을 입력받고 오름차순으로 정렬시켜줬다.int[] arr = new int[N];for(int i=0; i  그 후 이중 반복문을 이용해서 걸리는 시간을 계산해준다.int time=0;for(i..

알고리즘/백준 2024.08.26

백준-1931번/회의실 배정 (java)

문제 이해 N개의 회의 시작시간, 끝나는 시간이 주어질때  각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 구해주면 된다. 이 문제에서 가장 중요한 점은 각 회의들의 종료 시간이 빠른 순으로 정렬을 해야한다는 점이다.왜냐하면 종료시간 기준으로 오름차순 정렬을 해주면 회의가 빨리 끝나서 최대한 많은 회의를 진행하는 경우를 구할 수 있기 때문이다.  문제 해결 ex) 예제 입력111 43 50 65 73 85 96 108 118 122 1312 14  이것을 종료시간 기준 오름 차순으로 정렬해주면 다음과 같이 변한다.[1, 4][3, 5][0, 6][5, 7][3, 8][5, 9][6, 10][8, 11][8, 12][2, 13][12, 14] 1에 시작 ---> 4에 종료..  ..

알고리즘/백준 2024.08.23

백준-11047번/동전 0 (java)

문제 이해 N개 종류의 동전이 존재(각 종류별로 동전의 갯수는 충분히 존재함)이 동전들로 K원을 만들 수 있는 최소 동전의 갯수를 구하면 된다. 문제 해결 동전을 입력 받을때 오름 차순으로 입력받으므로 배열의 뒷부분(가장큰 금액의 동전)부터 연산에 포함해주면 최소한의 동전으로 K원을 맞출 수 있다.import java.util.Scanner;public class Problem11047 { static int N; static int K; static int[] arr; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int count=0; N=s..

알고리즘/백준 2024.08.21