CT
[BOJ] 12단계 브루트 포스
kinggora
2023. 4. 5. 23:57
브루트 포스
모든 경우의 수 고려
| 1 | 2798 | 블랙잭 |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
int N = Integer.parseInt(tokenizer.nextToken());
int M = Integer.parseInt(tokenizer.nextToken());
int[] cards = new int[N];
tokenizer = new StringTokenizer(reader.readLine());
for(int i = 0; i < N; i++) {
cards[i] = Integer.parseInt(tokenizer.nextToken());
}
int minGap = Integer.MAX_VALUE;
int minSum = 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++) {
int sum = cards[i] + cards[j] + cards[k];
if(M - sum >= 0 && M - sum < minGap) {
minGap = M - sum;
minSum = sum;
}
}
}
}
System.out.println(minSum);
}
}
*카드는 1장씩 존재 -> i,j,k 가 중복되면 안됨
| 2 | 2231 | 분해합 |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(reader.readLine());
for(int i = 1; i < N; i++) {
int sum = 0;
int temp = i;
while(temp != 0) {
sum += temp % 10;
temp = temp / 10;
if(sum > N) {
break;
}
}
if(sum + i == N) {
System.out.println(i);
return;
}
}
System.out.println(0);
}
}
*sum이 N을 넘어서는 순간 분해합이 아닌 것이므로 while 루프를 즉시 빠져나가도록 함
| 3 | 19532 | 수학은 비대면강의입니다 |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
int a = Integer.parseInt(tokenizer.nextToken());
int b = Integer.parseInt(tokenizer.nextToken());
int c = Integer.parseInt(tokenizer.nextToken());
int d = Integer.parseInt(tokenizer.nextToken());
int e = Integer.parseInt(tokenizer.nextToken());
int f = Integer.parseInt(tokenizer.nextToken());
int x = (c*e - b*f) / (a*e - b*d);
int y = (d*c - a*f) / (b*d - a*e);
System.out.println(x + " " + y);
}
}
| 4 | 1018 | 체스판 다시 칠하기 |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static char[][] board;
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] split = reader.readLine().split(" ");
int N = Integer.parseInt(split[0]);
int M = Integer.parseInt(split[1]);
board = new char[N][M];
for(int i = 0; i < N; i++) {
String str = reader.readLine();
for(int j = 0; j < M; j++) {
board[i][j] = str.charAt(j);
}
}
int min = Integer.MAX_VALUE;
for(int i = 0; i <= N - 8; i++) {
for(int j = 0; j <= M - 8; j++) {
int cnt = find(i, j);
if(min > cnt) {
min = cnt;
}
}
}
System.out.println(min);
}
public static int find(int N, int M) {
int startB = 0;
int startW = 0;
for(int i = N; i < N + 8; i++) {
for(int j = M; j < M + 8; j++) {
if(i % 2 == 0) {
if(j % 2 == 0) {
if(board[i][j] == 'W') {
startB++;
} else {
startW++;
}
} else if(j % 2 == 1) {
if(board[i][j] == 'B') {
startB++;
} else {
startW++;
}
}
} else {
if(j % 2 == 0) {
if(board[i][j] == 'W') {
startW++;
} else {
startB++;
}
} else if(j % 2 == 1) {
if(board[i][j] == 'B') {
startW++;
} else {
startB++;
}
}
}
}
}
return Math.min(startB, startW);
}
}
| 5 | 1436 | 영화감독 숌 |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(reader.readLine());
int cnt = 0;
for(int i = 666; i < Integer.MAX_VALUE; i++) {
if(String.valueOf(i).contains("666")) {
cnt++;
if(cnt == N) {
System.out.println(i);
return;
}
}
}
}
}
| 6 | 2839 | 설탕 배달 |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int weight = Integer.parseInt(reader.readLine());
int max5 = weight / 5;
int max3 = weight / 3;
for(int i = 0; i <= max3; i++) {
for(int j = 0; j <= max5; j++) {
if(i * 3 + j * 5 == weight) {
System.out.println(i + j);
return;
}
}
}
System.out.println(-1);
}
}
*내부 for문을 통해 5kg 짜리로 최대한 무게를 맞추고 3kg을 증가해나가는 방식