코드와이
[SW Expert Academy] 4613. 러시아 국기 같은 깃발 본문
문제링크
package D4;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class 러시아_국기 {
static char[][] arr;
static char[] wbr = { 'W', 'B', 'R' };
static int[] numbers, input;
static int n, m, ans;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for(int tc = 1 ;tc <= T ; tc++) {
sb.append("#").append(tc).append(" ");
st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
arr = new char[n][m];
for(int i = 0 ; i < n ; i++) {
arr[i] = br.readLine().toCharArray();
}
numbers = new int[4];
input = new int[n];
for(int i = 0 ; i < n ; i++) {
input[i] = i;
}
numbers[0] = 0;
ans = 987654321;
set(1,1);
sb.append(ans).append("\n");
}
sb.setLength(sb.length() - 1);
System.out.println(sb);
}
public static void set(int cnt, int idx) {
if(cnt == 3) {
int sum = 0;
numbers[3] = n;
for(int i = 0 ; i < 3 ; i++) {
for(int j = numbers[i] ; j < numbers[i+1] ; j++) {
for(int k = 0 ; k < m ; k++) {
if (arr[j][k] != wbr[i]) {
sum += 1;
}
}
}
}
ans = Math.min(ans, sum);
return;
}
for(int i = idx ; i < n ; i++) {
numbers[cnt] = input[i];
set(cnt + 1, i + 1);
}
return;
}
}
'SW_Expert' 카테고리의 다른 글
[SW Expert Academy] 3289. 서로소 집합 (0) | 2021.03.19 |
---|---|
[SW Expert Academy] 1258. [S/W 문제해결 응용] 7일차 - 행렬찾기 (0) | 2021.03.16 |
[SW Expert Academy] 3347. 올림픽 종목 투표 (0) | 2021.03.12 |
[SW Expert Academy] 7854. 최약수 (0) | 2021.03.11 |
[SW Expert Academy] 1238. [S/W 문제해결 기본] 10일차 - Contact (0) | 2021.03.10 |