Dazzling 개발 노트

[백준] 17829 - 222-풀링(Java) 본문

Algorithm/백준

[백준] 17829 - 222-풀링(Java)

dj._.dazzling 2023. 7. 4. 17:32

[백준] 17829 - 222-풀링 (Java)

문제

https://www.acmicpc.net/problem/17829

 

17829번: 222-풀링

조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 22

www.acmicpc.net

풀이

2*2 형태로 잘라서 배열 정렬 후 2번째 큰 숫자들만 뽑아서 새로운 배열을 만드는 방식으로 풀었다.

Arrays.sort를 써도 되나,,, 하면서도 빨리 완성이나 해보고 싶어서 일단 사용함.

근데 이 방법의 정렬은 기본이 오름차순이라 당연히 Collections.사용해서 내림차순으로 변경하려 했는데,

생각해 보니 굳이 내림차순으로 바꾸지 않고 인덱스를 반대로 보면 됐다.

 

참고한 풀이에선 원래 처음 arr를 덮어 씌워서 풀었던데

난 오히려 헷갈려서 tempArr를 별도로  선언하여 풀었다.

코드

import java.io.*;
import java.util.*;

public class Main {
   
   static int[][] arr;
   static int N, M;
   static int[][] tempArr;

   public static void main(String[] args) throws IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      StringTokenizer str;
      
      N = Integer.parseInt(br.readLine());
      arr = new int [N][N];
      
      for (int i=0; i<N; i++) {
    	  str = new StringTokenizer(br.readLine(), " ");
    	  for (int j=0; j<N; j++) {
    		 arr[i][j] = Integer.parseInt(str.nextToken());
    	  }
      }
      
      func(N);
      System.out.println(arr[0][0]);
   }
   
   static void func(int N) {
	   
	   if (N == 1) return;
	   
	   tempArr = new int[N/2][N/2];
	   
	   for (int x=0; x<N; x+=2) {
		   for (int y=0; y<N; y+=2) {
			   int[] temp = {arr[x][y], arr[x][y+1], arr[x+1][y], arr[x+1][y+1]};
			   Arrays.sort(temp);		//오름차순 정렬, 2번째 큰 수의 index는 2
			   
			   tempArr[x/2][y/2] = temp[2];
		   }
	   }
	   
	   arr = tempArr;
	   
	   func(N/2);
   }
   
}

후기

접근도 잘 하고 꽤 쉽게 풀었다고 생각했는데, temp 부분에 넣을 때 살짝 꼬였다.

처음엔 dir배열로 해서 x축, y축 이동하듯이 방향 배열을 써볼까 했는데 그냥 1더하고 안더하고 하면 쉽게 풀 수 있는 것이었당...ㅎ

 

Commit

https://github.com/allrightDJ0108/CodingTestStudy/commit/99ae7ab0c0c88cbf19d0ac2e52d34569251c8772

 

Baekjoon #17829 · allrightDJ0108/CodingTestStudy@99ae7ab

allrightDJ0108 committed Jul 4, 2023

github.com

참고

https://kwoncorin.tistory.com/46

 

[JAVA]백준 17829번: 222-풀링

www.acmicpc.net/problem/17829 17829번: 222-풀링 조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감

kwoncorin.tistory.com