January 03, 2022
백준 문제 링크 : https://www.acmicpc.net/problem/1780
import java.util.*;
public class B_17829 {
public static int[][] board;
public static int getSecondValue(int ...values){
int secondValue = Integer.MIN_VALUE;
int maxValue = Integer.MIN_VALUE;
for(int val : values){
if(maxValue <= val){
secondValue = maxValue;
maxValue = val;
}
if(val < maxValue && secondValue < val ) secondValue = val;
}
return secondValue;
}
public static int partition(int row, int col, int size){
if(size == 1) return board[row][col];
// 4개로 나누기
int nSize = size/2;
return getSecondValue(partition(row, col, nSize),partition(row+nSize, col, nSize),partition(row, col+nSize, nSize),partition(row+nSize, col+nSize, nSize));
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
board = new int[N][N];
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
board[i][j] = sc.nextInt();
}
}
System.out.println(partition(0,0,N));
}
}
다음과 같이 4개로 나눈것들을 크기비교를 해서 2번째로 큰 숫자를 구하도록 구현하였다. 생각보다 코드가 깔끔하게 짜졌지만 더 깔끔하게 짜도록 노력해야겠다.