매일 Algorithm

신재원·2023년 3월 7일
0

Algorithm

목록 보기
58/243

백준 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);
        }

    }
}

0개의 댓글