반응형
풀이 언어 : JAVA
풀이 방법 : 완전 탐색
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Solution {
static int N;
static int M;
static int[] White;
static int[] Black;
static int[] Red;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int test_case=1; test_case<=T; test_case++) {
StringTokenizer NM = new StringTokenizer(br.readLine());
N = Integer.parseInt(NM.nextToken());
M = Integer.parseInt(NM.nextToken());
White= new int[N];
Black= new int[N];
Red= new int[N];
for(int i=0; i<N; i++) {
String row = br.readLine();
for(int j =0; j<M; j++) {
char r = row.charAt(j);
if (r == 'W') White[i]++;
else if(r == 'B') Black[i]++;
else Red[i]++;
}
}
int min = Integer.MAX_VALUE;
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 = 0;
for(int p=0; p<=i; p++) sum +=White[p];
for(int p=i+1; p<=j; p++) sum+=Black[p];
for(int p=j+1; p<N; p++) sum+=Red[p];
int newNum = N*M - sum;
if (min > newNum) {
min = newNum;
}
}
}
}
bw.write("#" + test_case + " " + min + "\n");
}
bw.close();
br.close();
}
}
링크
반응형
'알고리즘 > 과제' 카테고리의 다른 글
백준 1181번 단어 정렬 (0) | 2021.09.05 |
---|---|
SW Expert Academy 2068. 최대수 구하기 (0) | 2021.08.21 |
SW Expert Academy 2056. 연월일 달력 (0) | 2021.08.14 |
댓글