1. 문제
https://programmers.co.kr/learn/courses/30/lessons/12905
코딩테스트 연습 - 가장 큰 정사각형 찾기
[[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9
programmers.co.kr
2. 나의 풀이
import java.util.*;
class Solution{
public int solution(int [][]board){
int answer = 0;
int [][] dp = new int [2][board[0].length];
for(int i = 0; i < board.length; i = i + 1) {
if(i == 0) {
for(int j = 0; j < board[0].length; j = j + 1) {
dp[i][j] = board[i][j];
if(dp[i][j] > answer) {
answer = dp[i][j];
}
}
continue;
}
for(int j = 0; j < board[0].length; j = j + 1) {
if(board[i][j] == 0) {
dp[1][j] = 0;
continue;
}
if(j == 0) {
dp[1][j] = board[i][j];
continue;
}
int choiso = 1001;
choiso = (int)Math.min(choiso, dp[0][j-1]);
choiso = (int)Math.min(choiso, dp[1][j-1]);
choiso = (int)Math.min(choiso, dp[0][j]);
//System.out.println("choiso : " + choiso);
dp[1][j] = choiso + 1;
/*
for(int [] imsi1 : dp) {
System.out.println(Arrays.toString(imsi1));
}
System.out.println("");
*/
if(dp[1][j] > answer) {
answer = dp[1][j];
}
}
for(int j = 0; j < board[0].length; j = j + 1) {
dp[0][j] = dp[1][j];
dp[1][j] = 0;
}
}
return answer * answer;
}
}
3. 다른 사람 풀이
class TryHelloWorld
{
public int findLargestSquare(char [][]board)
{
int answer = 0;
int[][] aa = new int[board.length][board[0].length];
for(int i=0;i<board.length;i++) {
for(int j=0;j<board[i].length;j++) {
if( board[i][j] == 'O' ) {
aa[i][j] = 1;
} else {
aa[i][j] = 0;
}
}
}
for(int i=1;i<aa.length;i++) {
for(int j=1;j<aa[i].length;j++) {
if( aa[i][j] == 1 ) {
int minVal = 0;
minVal = aa[i-1][j] < aa[i][j-1] ? aa[i-1][j] : aa[i][j-1];
minVal = aa[i-1][j-1] < minVal ? aa[i-1][j-1] : minVal;
aa[i][j] = minVal + 1;
answer = answer < aa[i][j] ? aa[i][j] : answer;
}
}
}
return answer*answer;
}
public static void main(String[] args)
{
TryHelloWorld test = new TryHelloWorld();
char [][]board ={
{'X','O','O','O','X'},
{'X','O','O','O','O'},
{'X','X','O','O','O'},
{'X','X','O','O','O'},
{'X','X','X','X','X'}};
System.out.println(test.findLargestSquare(board));
}
}
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
(Java)프로그래머스 코딩테스트 연습 - 연습문제 - JadenCase 문자열 만들기 (0) | 2020.12.13 |
---|---|
(Java)프로그래머스 코딩테스트 연습 - 2019 카카오 개발자 겨울 인턴십 - 튜플 (0) | 2020.12.12 |
(Java)프로그래머스 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - [3차] n진수 게임 (0) | 2020.12.09 |
(Java)프로그래머스 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - [3차] 파일명 정렬 (0) | 2020.12.09 |
(Java)프로그래머스 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - [3차] 압축 (0) | 2020.12.08 |