프로그래밍/알고리즘
프로그래머스/위클리 챌린지/최소직사각형
Doublsb
2021. 9. 27. 11:54
https://programmers.co.kr/learn/courses/30/lessons/86491
풀이
- 모든 명함이 들어갈 수 있는 가장 작은 지갑을 만들어야 한다
- 명함을 회전시켜서 넣을 수도 있다
- 지갑의 크기를 출력해라
- 그냥 최대값을 구하는 문제인데, 회전 가능한 부분만 고려하면 된다
- 명함들을 긴 쪽을 가로, 짧은 쪽을 세로로 보이도록 회전했다
- 가로와 세로의 최대값을 구해 곱하면 된다
C#
using System;
public class Solution {
public int solution(int[,] sizes) {
int width = 0;
int height = 0;
for(int i=0; i<sizes.GetLength(0); i++)
{
(int t1, int t2) temp = (sizes[i, 0], sizes[i, 1]);
if(temp.t2 > temp.t1)
{
//Swap
int t3 = temp.t1;
temp.t1 = temp.t2;
temp.t2 = t3;
}
if(width < temp.t1) width = temp.t1;
if(height < temp.t2) height = temp.t2;
}
return width * height;
}
}
결과
100.0 / 100.0
피드백
문제는 별거 없었다.
잘 쓰지 않던 튜플로 코딩해봤다. 깔끔하고 읽기 좋은 듯?
반응형