기록을 합시다.
[프로그래머스] 최소 직사각형(python/java) 본문
문제 요약
- 모든 명함을 담을 수 있는 명함 케이스의 크기를 구하라
- 명함의 크기는 가로, 세로로 회전해서 넣을 수 있으므로 이 점 고려해야함
내가 생각한 로직
- 모든 명함의 가로, 세로를 크기 순으로 정렬한다. (ex. [30,70] => [70,30])
- 크기순으로 정렬한 명함들 안에서 첫 번째 요소의 max값과 두 번째 요소의 max값을 구한다.
파이썬으로 제출한 정답
def solution(sizes):
sorted_sizes = []
max_width = -1
max_height = -1
for size in sizes :
n, m = size
if n >= m:
sorted_sizes.append(size)
else:
sorted_sizes.append([m, n])
for size in sorted_sizes:
n, m = size
if max_width < n:
max_width = n
if max_height < m :
max_height = m
answer = max_width * max_height
return answer
자바로 제출한 정답
class Solution {
public int solution(int[][] sizes) {
int maxWidth = 0;
int maxHeight = 0;
for(int[] size : sizes){
int tmpA = size[0];
int tmpB = size[1];
//명함의 가로가 세로보다 길 때
if(tmpA >= tmpB){
//최대값보다 클 때
if(tmpA > maxWidth){
maxWidth = tmpA;
}
//최대값보다 클 때
if(tmpB > maxHeight){
maxHeight = tmpB;
}
}else{
if(tmpA > maxHeight){
maxHeight = tmpA;
}
if(tmpB > maxWidth){
maxWidth = tmpB;
}
}
}
int answer = maxWidth*maxHeight;
return answer;
}
}
'공부 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 모의고사(python/java) (0) | 2023.06.12 |
---|---|
[프로그래머스] 완주하지 못 한 선수 (0) | 2023.06.11 |
[프로그래머스] k번째 수(python/java) (0) | 2023.06.05 |
[프로그래머스] 같은 숫자는 싫어(python/java) (0) | 2023.06.05 |
[프로그래머스] 폰켓몬(python/java) (0) | 2023.06.05 |
Comments