알고리즘/Samsung
(자바) SWEA 15868. XOR 2차원 배열
son_i
2023. 5. 20. 22:34
728x90
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
음 이거 전에 풀었었나 ?
암튼 더 깔끔하게 풀었다.
자바 지원이 안 돼서 테스트 케이스 일단 맞는 건 확인 !
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int i=1;i<=T;i++) {
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int arr[][] = new int[N][M];
boolean a[] = new boolean[N];
boolean b[] = new boolean[M];
for(int j=0;j<N;j++) {
String str = br.readLine();
for(int k=0;k<str.length();k++) {
arr[j][k] = Character.getNumericValue(str.charAt(k));
}
}
a[0] = true;
for(int k=0;k<M;k++) { //b배열을 다 채움.
if(arr[0][k] == 0)
b[k] = a[0];
else//1이면 ab요소 서로 달라야함.
b[k] = !a[0];
}
for(int j=1;j<N;j++) {//arr의 맨 오른쪽 끝 빼고 다 비교해나감.
for(int k=0;k<M-1;k++) {
if(arr[j][k] == 0) {
if(b[k] == true) a[j] = true;
else a[j] = false;
}
else {
if(b[k] == true) a[j] = false;
else a[j] = true;
}
}
}
if(arr[N-1][M-1] == 0) {
if(a[N-1] == b[M-1]) sb.append("yes");
else sb.append("no");
}
else {
if(a[N-1] == b[M-1]) sb.append("no");
else sb.append("yes");
}
System.out.println("#"+i+" "+sb);
}
}
}
728x90