[백준/BOJ]14457. Cow Tipping [Bronze1]

jychan99·2021년 8월 24일
0
post-thumbnail
  1. Cow Tipping

문제출처 : https://www.acmicpc.net/problem/14457

요즘 스케줄이 바빠서 백준을 못풀고있는데...
3일동안은 고민한것같다..
그래도 안풀려서 여러가지 자료, 풀이도 찾아봤는데, C언어 풀이는 없더라 ㅠㅠㅠ
내생각에 코드자체는 잘굴러가는데, 입력하는 과정에서, N을 문자열로 받아야하는데,
문자열을 받고 2차원배열로 접근을 하려고해도 안되더라....(나중에 시도하면 또 되려나..?)
일단은 그냥 정수로 받아서 실행을시키면 정상작동은 된다.

나중에 시간적으로 여유가좀생기면, 다시풀어볼생각이다.
계속 이것만 잡고 늘어지는것도 스트레스받으니까........
다만, 반례나 풀이같은게 좀있었으면 좋겠다 ㅠㅠ

int cnt = 0;
void flip(int grid[10][10], int N, int i, int j)
{
	for (int a = i; a >= 0; a--)
	{
		for (int b = j; b >= 0; b--)
		{
			if (grid[a][b] == 1)
			{
				grid[a][b] = 0;
			}
			else
			{
				grid[a][b] = 1;
			}
		}
	}
	cnt++;
}
int main()
{
	int N, i, j, x, y;
	int arr[10][10] = { 0 };
	scanf("%d", &N);
	for (i = 0; i < N; i++)
		for (j = 0; j < N; j++)
			scanf("%d", &arr[i][j]);
	for (i = N - 1; i >= 0; i--)
	{
		for (j = N - 1; j >= 0; j--)
		{
			if (arr[i][j] == 1)
				flip(arr, N, i, j);
		}
	}
	printf("%d", cnt);
	return 0;
}

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {

    static int cnt=0;
    static void toggle(char[][] arr,int i, int j){
        for(int k=0;k<=i;k++){
            for(int l=0;l<=j;l++){
                if(arr[k][l]=='1'){
                    arr[k][l]='0';
                }else{
                    arr[k][l]='1';
                }
            }
        }
        cnt++;
    }

    public static void main(String args[]) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());
        String str;
        char [][] arr= new char[10][10];

        for(int i=0;i<N;i++){
            str=br.readLine();
            arr[i] = str.toCharArray();
        }

        for(int i=N-1;i>=0;i--){
            for(int j=N-1;j>=0;j--){
                if(arr[i][j]=='1'){
                    toggle(arr, i, j);
                }
            }
        }
        bw.write(cnt+"");

        br.close();
        bw.close();
    }
}

예전에 내가 풀다가 실패한 문제들을 다시보고 있다.
2차원 배열에서 오른쪽 아래에서부터 1을 발견하면, 맨첫번째칸과 해당칸사이(직사각형모양)를 반복하면서 토글시켜주면된다.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글