풀이 방법
a, b칸을 뒤집으면 하위 모든 칸들이 뒤집히기 때문에 맨 위에서부터 확인해서 뒤집어 주었다.
세로와 가로 둘다 줄여 나가는것이 아닌 한쪽만 기준으로 잡고 줄여나가도 된다.
내 코드
package com.company;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[][] coins = new int[N + 1][M + 1];
int cnt = 0;
for (int i = 1; i <= N; i++) {
String x = br.readLine();
for (int j = 1; j <= M; j++) {
coins[i][j] = x.charAt(j - 1) - '0';
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (coins[N - i][M - j] == 1) {
reverseCoins(coins, N - i, M-j);
cnt++;
}
}
}
System.out.println(cnt);
}
static void reverseCoins(int[][] coins, int a, int b) {
for (int i = 1; i <= a; i++) {
for (int j = 1; j <= b; j++) {
if (coins[i][j] == 1)
coins[i][j] = 0;
else coins[i][j] = 1;
}
}
}
}
'코딩테스트 > [백준] 코딩테스트 연습' 카테고리의 다른 글
좋은 수열 - 2661번 (0) | 2021.10.04 |
---|---|
말이 되고픈 원숭이 - 1600번 (0) | 2021.10.04 |
알바생 강호 - 1758번 (0) | 2021.10.04 |
숨바꼭질 3 -13529번 (0) | 2021.10.03 |
DFS와 BFS - 1260번 (0) | 2021.10.02 |