문제설명입력 & 출력나의 풀이문제 접근 방법"백준 - 잃어버린 괄호"문제는 주어진 식에 적절히 괄호를 넣었을 때 최소의 값을 만드는 문제입니다. 연산자는 '+'와 '-'만 주어지기 때문에 최소 값을 만드려면 마이너스 값이 최대한 커야합니다. 즉, 가장 큰 수를 빼줘야 합니다. 위와 같이 가장 큰 수를 만드려면 50 + 40 = 90 을 통해 가장 큰 값을 구할 수 있습니다. 여기서 알 수 있듯이 덧셈(+)으로 이루어진 수를 먼저 더하면 큰 값을 구할 수 있습니다.100+200-300+400-500+600+700-800+900+1000-1100+1200 위와 같이 긴 연산이 주어진다고 해도 뺄셈(-)을 기준으로 분리하면 아래와 같이 나옵니다. 1. ["100+200", "300+400", "500+60..
그리디 알고리즘
문제설명입력 & 출력나의 풀이문제 접근 방법"백준 - 회의실 배정"문제는 회의 시작 시간과 종료 시간이 공백을 기준으로 입력이 되고, 겹치지 않는 최대 회의의 수를 구하는 문제입니다.public class BOJ1931 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); boolean[] timeline = new boolean[100001]; // 시간 범위를 추적하기 위한 배열 int ..
문제설명나의 풀이import java.util.*;class Solution { public String solution(String number, int k) { StringBuilder sb = new StringBuilder(); int start = 0 ; int idx = 0; for(int i = 0 ; i 이번 문제는 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하는 문제입니다. 예를 들자면 "1924"일 때 [19,12,14,92,94,24]가 되는데 여기서 가장 큰 수인 94가 정답입니다. 숫자를 하나씩 제거하면서 비교하는 것이 아니라 이 문제에서는 매번 가능한 범위 내에서 가장 큰 숫자..
문제설명입력 & 출력나의 풀이import java.util.*;class Solution { public int solution(int[] people, int limit) { int minWeight = 0; // 가벼운 사람을 가리킬 인덱스 int maxWeight = people.length-1; //무거운 사람을 가리킬 인덱스 int boat = 0; // 보트 수 Arrays.sort(people); //오름차순 정렬 while(minWeight 이번 문제는 무인도에 갇힌 사람들을 2명의 제한과 몸무게 제한도 있는 구명보트로 최대한 적게 구명보트를 사용하여 모든 사람을 구하는 문제입니다. 그리디 ..