글 작성자: Doublsb

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

 

피드백

문제는 별거 없었다.

잘 쓰지 않던 튜플로 코딩해봤다. 깔끔하고 읽기 좋은 듯?

반응형