Lv. 2 쿼드압축 후 개수 세기 - 실패
참고한 풀이
[프로그래머스] 쿼드압축 후 개수 세기 for JAVA 분할정복
문제설명 0과 1로 이루어진 2n x 2n 크기의 2차원 정수 배열 arr이 있습니다. 당신은 이 arr을 쿼드 트리와 같은 방식으로 압축하고자 합니다. 구체적인 방식은 다음과 같습니다. 당신이 압축하고
devdange.tistory.com
Lv. 2 스킬트리 - 실패
참고한 풀이
https://mozzioi.tistory.com/99
[프로그래머스] [Java] 스킬트리
문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트
mozzioi.tistory.com
Lv. 2 방문 길이 - 실패
참고한 풀이
https://ilmiodiario.tistory.com/97
[프로그래머스] level2. 방문 길이 (자바 JAVA)
[ 문제 ] [프로그래머스] level2. 방문 길이 (자바 JAVA) 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr # 접근 방법 및 풀이 처음에..
ilmiodiario.tistory.com
Lv. 2 가장 큰 정사각형 찾기 - 실패
첫번째 풀이(1) : 효율성 테스트를 통과하지 못함.
class Solution
{
public int solution(int [][]board)
{
int answer = 0;
for(int i = 0 ; i < board.length; i++){
for(int j = 0 ; j < board[i].length ; j++){
int range = check(i,j,board);
int result = findSqure(i, j, range, board);
if(result == 1) {
answer = Math.max(answer, range);
}
}
}
answer = answer * answer;
return answer;
}
public int check(int row, int col, int[][] arr){
int candX = 1;
int candY = 1;
for(int i = row; i < arr.length - 1; i++){
if(arr[i][col] == arr[i + 1][col]){
candY++;
}else{
break; //같지 않은경우 개수세기 종료
}
}
for(int j = col ; j < arr[0].length - 1; j++){
if(arr[row][j] == arr[row][j+1]){
candX++;
}else{
break; //같지 않은경우 개수세기 종료
}
}
return Math.min(candX,candY);
}
public int findSqure(int startX, int startY,int range, int[][] arr){
for(int i = startX ; i < startX + range ; i++){
for(int j = startY ; j < startY + range ; j++){
if(arr[i][j] == 0){
return -1;
}
}
}
return 1;
}
}
참고한 풀이
class Solution
{
public int solution(int [][]board)
{
int answer = 1;
int r = board.length;
int c = board[0].length;
//표가 전부 0으로 이루어진지 확인
int zero = 0;
for(int i=0; i<r; i++){
for(int j=0; j<c; j++){
if(board[i][j] == 1)
break;
zero++;
}
}
//모두 0인 경우
if(zero == r*c)
return 0;
//가장 큰 정사각형 구하기
for(int i=1; i<r; i++){
for(int j=1; j<c; j++){
if(board[i][j] == 0)
continue;
board[i][j] = Math.min(Math.min(board[i-1][j],board[i][j-1]), board[i-1][j-1])+1;
if(board[i][j] > answer)
answer = board[i][j];
}
}
//넓이
answer = answer*answer;
return answer;
}
}
https://excited-hyun.tistory.com/205
[프로그래머스 - Java] 가장 큰 정사각형 찾기
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 풀이 이 문제는 브루트포스로 푸는 경우..
excited-hyun.tistory.com
'알고리즘' 카테고리의 다른 글
[Algorithm] 6월19일 알고리즘 연습 (프로그래머스 LEVEL2) - 에이젠 (0) | 2022.06.19 |
---|---|
[Algorithm] 6월 18일 알고리즘 연습(프로그래머스 LEVEL2) - 에이젠 (0) | 2022.06.18 |
[Algorithm] 6월12일 알고리즘 연습 (프로그래머스 level2) - 에이젠 (0) | 2022.06.17 |
[Algorithm] 6월 11일 알고리즘 연습 (프로그래머스 LEVEL2) - 에이젠 (0) | 2022.06.11 |
[Algorithm] 6월9일 알고리즘 연습 (프로그래머스 LEVEL2) - 에이젠 (0) | 2022.06.09 |
댓글