[프로그래머스] 최소직사각형 (시뮬레이션)

2025. 5. 24. 12:01·Algorithm/Coding Test Records

문제 소개

오늘 풀었던 최소 직사각형 - 프로그래머스 문제를 정리합니다.
이 문제는 모든 명함을 수납할 수 있는 최소 크기의 지갑을 만들기 위한 시뮬레이션 문제입니다.
핵심은 명함을 회전시켜 수납 가능하다는 점을 고려해, 가로·세로를 정렬하여 최소 면적을 구하는 것입니다.

문제 링크: 최소 직사각형 - 프로그래머스


문제 접근 방식

이 문제는 다음과 같은 방식으로 접근했습니다:

  1. 명함을 회전 가능하므로, 항상 더 긴 쪽을 가로로 설정
  2. 가로 길이 중 최댓값, 세로 길이 중 최댓값을 추출
  3. 이 두 최댓값의 곱이 지갑의 최소 크기

해결 과정 및 코드

핵심 아이디어

  1. 각 명함에 대해 가로 = max(w, h), 세로 = min(w, h)로 정렬
  2. 이렇게 정렬된 명함들 중 가로/세로 각각의 최대값을 구함
  3. 해당 최대값들을 곱하면 가장 작은 지갑 크기 계산 가능

코드

시간 복잡도 : O(N)

public class Solution {
    public int solution(int[][] sizes) {
        int maxWidth = 0;
        int maxHeight = 0;

        for (int[] size : sizes) {
            // 가로와 세로 중 더 큰 값을 가로로, 작은 값을 세로로
            int width = Math.max(size[0], size[1]);
            int height = Math.min(size[0], size[1]);

            maxWidth = Math.max(maxWidth, width);
            maxHeight = Math.max(maxHeight, height);
        }

        return maxWidth * maxHeight;
    }
}

'Algorithm > Coding Test Records' 카테고리의 다른 글

[프로그래머스] 아이템 줍기 (BFS)  (1) 2025.05.26
[프로그래머스] 모의고사 (시뮬레이션)  (0) 2025.05.25
[프로그래머스] 게임 맵 최단거리 (A* 알고리즘)  (1) 2025.05.23
[프로그래머스] 게임 맵 최단거리 (BFS)  (0) 2025.05.22
[프로그래머스] 주식가격 (Stack)  (0) 2025.05.20
'Algorithm/Coding Test Records' 카테고리의 다른 글
  • [프로그래머스] 아이템 줍기 (BFS)
  • [프로그래머스] 모의고사 (시뮬레이션)
  • [프로그래머스] 게임 맵 최단거리 (A* 알고리즘)
  • [프로그래머스] 게임 맵 최단거리 (BFS)
Celion
Celion
오늘도 평소처럼 화이팅!
  • Celion
    Orion Log
    Celion
  • 전체
    오늘
    어제
    • 전체 글 (144)
      • Uncompiled Thoughts (8)
        • 네이버 부스트캠프 10기 (5)
      • CS 기초부터 한 걸음씩 (34)
      • Code Odyssey (22)
      • Algorithm (77)
        • Coding Test Records (63)
      • Git (3)
      • reference (0)
  • 블로그 메뉴

    • 태그
    • 방명록
  • 태그

    boostcamp
    알고리즘고득점kit
    문법정리
    Level3
    greedy
    백준
    Level2
    java
    코테
    Kotlin
    프로그래머스
    시뮬레이션
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
Celion
[프로그래머스] 최소직사각형 (시뮬레이션)
상단으로

티스토리툴바