백준 14659번 (그리디)
import java.util.Scanner;
public class problem164 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = in.nextInt();
}
int count = 0;
int result = Integer.MIN_VALUE;
for (int j = 0; j < arr.length; j++) {
// count 초기화
count = 0;
for (int k = j + 1; k < arr.length; k++) {
if (arr[j] > arr[k]) { // 자신보다 높은 봉우리면 증가
count++;
} else {
break;
}
}
result = Math.max(result, count);
}
System.out.print(result);
}
}
백준 1448번 (그리디)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class problem165 {
public static void main(String[] args) throws IOException {
// 메모리 초과 이슈로 BufferedReader 사용
BufferedReader bf =
new BufferedReader(new InputStreamReader(System.in));
int size = Integer.parseInt(bf.readLine());
Integer[] arr = new Integer[size];
for (int i = 0; i < size; i++) {
arr[i] = Integer.parseInt(bf.readLine());
}
Arrays.sort(arr, Comparator.reverseOrder());
int answer = Integer.MIN_VALUE;
// size - 2 로 조건을 건 이유는 3개 씩 비교 해야되기 때문.
for (int j = 0; j < size - 2; j++) {
if (arr[j] < arr[j + 1] + arr[j + 2]) {
answer = Math.max(answer, arr[j] + arr[j + 1] + arr[j + 2]);
}
}
if (answer == Integer.MIN_VALUE) {
System.out.print(-1);
return;
}
System.out.print(answer);
}
}
백준 12782번 (그리디)
import java.util.Scanner;
public class problem166 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
int result = 0;
for (int i = 0; i < size; i++) {
String n = in.next();
String m = in.next();
int one = 0;
int zero = 0;
for (int j = 0; j < n.length(); j++) {
// n 문자열과, m 문자열을 비교한다.
if (n.charAt(j) != m.charAt(j)) {
if (n.charAt(j) == '1') {
one++;
} else {
zero++;
}
}
}
result = Math.max(one, zero);
System.out.println(result);
}
}
}