일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 편스토랑 우승상품
- 금융문자분석경진대회
- 프로그래머스 파이썬
- Git
- ubuntu
- 캐치카페
- Baekjoon
- 더현대서울 맛집
- 데이콘
- 파이썬
- 백준
- Docker
- ChatGPT
- SW Expert Academy
- dacon
- leetcode
- AI 경진대회
- 프로그래머스
- PYTHON
- programmers
- gs25
- 자연어처리
- Kaggle
- 우분투
- Real or Not? NLP with Disaster Tweets
- github
- 맥북
- hackerrank
- 코로나19
- 편스토랑
- Today
- Total
솜씨좋은장씨
[Programmers] 위클리 챌린지 8주차 - 최소직사각형 (Python) 본문

코딩 1일 1문제! 오늘의 문제는 프로그래머스 위클리 챌린지 8주차! 최소직사각형 입니다.
코딩테스트 연습 - 8주차
[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133
programmers.co.kr
👨🏻💻 코드 풀이
여러 명함의 크기를 알려주면 이 모든 명함들을 담을 수 있는 가장 작은 크기의 명함케이스의 크기를 구하는 문제입니다.
의외로 엄청 쉽게 풀 수 있는 문제입니다.
명함의 가로 세로 길이 중에서 가장 긴 길이로 먼저 명함케이스의 길이를 지정하면 쉽게 풀 수 있는 문제입니다.
먼저 각 명함의 길이들을 앞쪽에 더 긴 길이가 오도록 정렬합니다.
[[60, 50], [30, 70], [60, 30], [80, 40]]
-> [[60, 50], [70, 30], [60, 30], [80, 40]]
sizes = [sorted(size, reverse=True) for size in sizes]
여기서 각 값들의
첫번째 값들을 명함케이스의 가로 길이 후보
두번째 값들을 명함케이스의 세로 길이 후보로 만들어줍니다.
[[60, 50], [70, 30], [60, 30], [80, 40]]
- 가로 길이 후보 : [60, 70, 60, 80]
- 세로 길이 후보 : [50, 30, 30, 40]
widths = [size[0] for size in sizes]
heights = [size[1] for size in sizes]
각 후보에서 가장 큰 값을 명함케이스의 가로길이, 세로길이로 지정합니다.
- 가로 길이 후보 : [60, 70, 60, 80]
=> 가로 길이 = 80
- 세로 길이 후보 : [50, 30, 30, 40]
=> 세로 길이 = 50
width, height = max(widths), max(heights)
정답은 이렇게 구한 명함케이스의 크기를 구하는 것이므로
answer = width * height
가로와 세로의 길이를 곱한 값입니다.
전체 코드는 아래를 참고해주세요.
👨🏻💻 코드 ( Solution )
def solution(sizes):
answer = 0
sizes = [sorted(size, reverse=True) for size in sizes]
widths = [size[0] for size in sizes]
heights = [size[1] for size in sizes]
width, height = max(widths), max(heights)
answer = width * height
return answer

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07
1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.
github.com
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[BaekJoon] 1977번 : 완전제곱수 (Python) (0) | 2021.10.03 |
---|---|
[BaekJoon] 9093번 : 단어 뒤집기 (Python) (0) | 2021.10.02 |
[BaekJoon] 4375번 : 1 (Python) (0) | 2021.09.30 |
[BaekJoon] 1182번 : 부분수열의 합 (Python) (0) | 2021.09.29 |
[BaekJoon] 1747번 : 소수&팰린드롬 (Python) (0) | 2021.09.28 |