티스토리 뷰
728x90
문제 설명
1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.)
예를 들어
1 | 2 | 3 | 4 |
---|---|---|---|
0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 |
0 | 0 | 1 | 0 |
가 있다면 가장 큰 정사각형은
1 | 2 | 3 | 4 |
---|---|---|---|
0 | 1 |
1 |
1 |
1 | 1 |
1 |
1 |
1 | 1 |
1 |
1 |
0 | 0 | 1 | 0 |
가 되며 넓이는 9가 되므로 9를 반환해 주면 됩니다.
제한사항
- 표(board)는 2차원 배열로 주어집니다.
- 표(board)의 행(row)의 크기 : 1,000 이하의 자연수
- 표(board)의 열(column)의 크기 : 1,000 이하의 자연수
- 표(board)의 값은 1또는 0으로만 이루어져 있습니다.
입출력 예
board | answer |
---|---|
[[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] | 9 |
[[0,0,1,1],[1,1,1,1]] | 4 |
입출력 예 설명
입출력 예 #1
위의 예시와 같습니다.
입출력 예 #2
| 0 | 0 | 1
| 1
| 1 | 1 | 1
| 1
로 가장 큰 정사각형의 넓이는 4가 되므로 4를 return합니다.
문제 풀이 방법
이 문제는 DP 방법으로 문제를 해결해야한다.
배열을 탐색하면서 값이 1일 때 해당 위치에서 가로, 세로, 대각선의 숫자를 확인 해야한다.
가로, 세로, 대각선의 값에서 최솟값을 구한 다음 +1 한 값으로 업데이트를 해준다.
이 값은 현재 위치에서 가지는 정사각형의 한변의 길이가 된다.
반복문을 끝내고 나면 이렇게 값이 변경이 된다.
가로, 세로, 대각선 모두 2일때를 보면 최솟값은 2가 되고 이 값에 +1 을 한 값은 3이 된다.
반복문이 끝나면 배열은 이렇게 값이 변하게 된다.
여기서 만들어진 배열에서 최대값을 구한 다음 정사각형의 넓이를 구해주면 된다.
단, 배열의 값이 전체 0일때와 1이 1개 있을 때를 고려해서 풀이를 해야한다.
전체 코드
728x90
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 디펜스 게임 (Java, 자바) (0) | 2023.07.19 |
---|---|
프로그래머스 - 연속된 부분 수열의 합 (Java, 자바) (0) | 2023.07.18 |
프로그래머스 - 쿼드압축 후 개수 세기 (JAVA, 자바) (0) | 2023.07.15 |
프로그래머스 - 대충 만든 자판 (자바, JAVA) (0) | 2023.06.30 |
프로그래머스 - 스킬트리(JAVA) (0) | 2023.06.15 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백엔드 개발자
- 백엔드 개발자 취업 준비
- 프로그래머스 자바
- 알고리즘 공부
- 개발자 취업 준비
- 코테공부
- 주니어 개발자 취업 준비
- 백엔드 개발자 기술 면접 준비
- 개발자 면접 준비
- 코딩테스트
- 코딩테스트 공부
- 알고리즘
- 자바공부
- 프로그래머스
- 코딩테스트 준비
- 취업 준비
- 코딩테스트공부
- 백준
- 기술 면접 준비
- 코테준비
- 코테 준비
- 프로그래머스 카카오
- 제로베이스 백준 장학금
- java
- 알고리즘공부
- 취업준비
- 개발자 취준
- 취준
- 자바
- 제로베이스 백엔드 스쿨
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함