Programming/JAVA

[백준] 단계별로 풀어보기 > 브루트 포스 (Java)

코딩뽀시래기 2022. 1. 11. 15:19
728x90

+) 풀이 코드

https://github.com/jung0115/CodingTestPractice.git

 

GitHub - jung0115/CodingTestPractice: Practice Coding Test with Beakjoon, programmers, etc.

Practice Coding Test with Beakjoon, programmers, etc. - GitHub - jung0115/CodingTestPractice: Practice Coding Test with Beakjoon, programmers, etc.

github.com

 

+) 백준에 Java 코드를 제출할 때는 class명을 Main으로 해주어야 오류가 발생하지 않는다.

 

2798번 - 2022.01.11.화

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int N, M;
        int[] card_number;
        Scanner scan = new Scanner(System.in);
        N = scan.nextInt();
        M = scan.nextInt();

        card_number = new int[N];
        for(int i = 0; i < N; i++)
            card_number[i] = scan.nextInt();

        scan.close();

        int sum, answer = 0;
        for(int i = 0; i < N-2; i++){
            for(int j = i+1; j < N-1; j++){
                for(int k = j+1; k < N; k++){
                    sum = card_number[i] + card_number[j] + card_number[k];
                    if(sum <= M && sum > answer) answer = sum;
                }
            }
        }

        System.out.println(answer);
    }
}

 

2231번 - 2022.01.11.화

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int N;
        Scanner scan = new Scanner(System.in);
        N = scan.nextInt();
        scan.close();

        int sum, num, i;
        for(i = 1; i <= N; i++) {
            sum = i;
            num = i;
            while(num != 0) {
                sum += num%10;
                num /= 10;
            }
            if(sum == N) break;
        }
        if(i == (N+1)) System.out.println(0);
        else System.out.println(i);
    }
}

 

7568번 - 2022.01.13.목

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int N;
        int[] x, y;
        Scanner scan = new Scanner(System.in);
        N = scan.nextInt();
        x = new int[N];
        y = new int[N];
        for(int i = 0; i < N; i++){
            x[i] = scan.nextInt();
            y[i] = scan.nextInt();
        }
        scan.close();

        int[] lank = new int[N];
        for(int i = 0; i < N; i++) {
            lank[i] = 1;
            for(int j = 0; j < N; j++) {
                if(x[i] < x[j] && y[i] < y[j])
                    lank[i]++;
            }
        }

        for(int i = 0; i < N; i++)
            System.out.print(lank[i] + " ");
    }
}

 1018번 - 2022.01.13.목

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int N, M;
        String[][] chess;

        Scanner scan = new Scanner(System.in);
        N = scan.nextInt();
        M = scan.nextInt();
        chess = new String[N][M];
        String input = new String();
        for(int i = 0; i < N; i++) {
            input = scan.next(); //문자열 한 줄로 입력 받음
            chess[i] = input.split(""); //배열에 문자 한 글자씩 저장
        }
        scan.close();

        int min = N*M, check;
        for(int i = 0; i < N-7; i++) {
            for(int j = 0; j < M-7; j++) {
                check = checkMin(i, j, chess);
                if(min > check) min = check;
            }
        }
        
        System.out.println(min);
    }
    static int checkMin(int startI, int startJ, String[][] chess) {
        int startWhite = 0, startBlack = 0;
        String checkWhite;
        for(int i = startI; i < startI+8; i++) {
            if(i%2 == 0) checkWhite = "W";
            else checkWhite = "B";

            for(int j = startJ; j < startJ+8; j++) {
                if(checkWhite.equals(chess[i][j])) startBlack++;
                else startWhite++;

                if(checkWhite.equals("B")) checkWhite = "W";
                else checkWhite = "B";
            }
        }

        if(startWhite < startBlack) return startWhite;
        else return startBlack;
    }
}

 

1436번 - 2022.01.14.금

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int N;
        Scanner scan = new Scanner(System.in);
        N = scan.nextInt();
        scan.close();

        int num = 666, cnt = 1;
        while(N != cnt) {
            num++;
            if(checkEndNumber(num)) cnt++;
        }
        System.out.println(num);
    }
    static boolean checkEndNumber(int num) {
        int cnt = 0;
        while(num > 0){
            if(num%10 == 6) cnt++;
            else cnt = 0;
            num /= 10;
            if(cnt == 3) return true;
        }
        return false;
    }
}

더 효율적인 방법이 있을까 싶어서 열심히 머리를 굴려봤지만... 이게 최선인 것 같다.

 

728x90