코드와이
[SW Expert Academy] 2112. [모의 SW 역량테스트] 보호 필름 본문
문제링크
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V1SYKAaUDFAWu
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
package 모의SW역량테스트;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class 보호_필름 {
static int d, w, k, arr[][], arr2[][], ans, one[], zero[];
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for(int tc = 1 ; tc <= T ; tc++) {
sb.append("#").append(tc).append(" ");
st = new StringTokenizer(br.readLine());
d = Integer.parseInt(st.nextToken());
w = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());
arr = new int[d][w];
arr2 = new int[d][w];
for(int i = 0 ; i < d ; i++) {
st = new StringTokenizer(br.readLine());
for(int j = 0 ; j < w ; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
arr2[i][j] = arr[i][j];
}
}
ans = 987654321;
one = new int[w];
zero = new int[w];
for(int i = 0 ; i < w ; i++) {
one[i] = 1;
}
if(k == 1) ans = 0;
else go(0,0);
sb.append(ans).append("\n");
}
sb.setLength(sb.length() - 1);
System.out.println(sb);
}
private static void go(int idx, int cnt) {
if(cnt >= ans) return;
if(check()) {
ans = Math.min(cnt, ans);
return;
}
if(idx == d) return;
go(idx + 1, cnt);
arr2[idx] = one;
go(idx + 1, cnt + 1);
arr2[idx] = arr[idx];
arr2[idx] = zero;
go(idx + 1, cnt + 1);
arr2[idx] = arr[idx];
}
private static boolean check() {
for(int j = 0 ; j < w ; j++) {
int tmp = arr2[0][j];
int cnt = 1;
boolean flag = false;
out :for(int i = 1 ; i < d ; i++) {
if(arr2[i][j] == tmp) {
cnt++;
} else {
tmp = arr2[i][j];
cnt = 1;
}
if(cnt == k) {
flag = true;
break out;
}
}
if(!flag) return false;
}
return true;
}
}
'SW_Expert' 카테고리의 다른 글
[SW Expert Academy] 6109. 추억의 2048게임 (0) | 2021.04.27 |
---|---|
[SW Expert Academy] 2383. [모의 SW 역량테스트] 점심 식사시간 (0) | 2021.04.23 |
[SW Expert Academy] 4301. 콩 많이 심기 (0) | 2021.04.22 |
[SW Expert Academy] 2115. [모의 SW 역량테스트] 벌꿀채취 (0) | 2021.04.22 |
[SW Expert Academy] 4366. 정식이의 은행업무 (0) | 2021.04.22 |