코테 연습 with Java - 5

아이모·2022년 10월 31일
0

swea 2805. 농작물 수확하기

<풀이>
재귀함수를 이용하여 문제를 풀었다.

<코드>

static int result;
static void harvest(int cnt, int N, int [][] farm, int count, int add){
        if(cnt == N)
            result = count;
        else{
            int num = count;
            int addNum = add;
            if(cnt <= N/2){
                for(int i = 0; i < N; i++){
                    if((N/2-cnt<=i) && (i<=N/2+cnt)){
                        num += farm[cnt][i];
                    }
                }
            }
            else {
                addNum++;
                addNum++;
                for(int i = 0; i < N; i++){
                    if((N/2-cnt+addNum<=i) && (i<=N/2+cnt-addNum)){
                        num += farm[cnt][i];
                    }
                }
            }
            harvest(cnt+1, N, farm, num, addNum);
        }
    }


main안의 코드

for(int test_case = 1; test_case <= T; test_case++)
        {
            int N = sc.nextInt();
            result = 0;
            int [][] farm = new int [N][N];
            String [] text = new String[N];
            for(int i = 0; i < N; i++){
                text = sc.next().split("");
                for(int j = 0; j < N ; j++){
                    farm[i][j] = Integer.parseInt(text[j]);
                }
            }
            harvest(0, N, farm, 0, 0);
            System.out.println("#"+test_case + " " + result);
             
        }
profile
데이터로 보는 실력

0개의 댓글