[프로그래머스]86491번 최소직사각형 | 완전 탐색

2024. 9. 12. 20:55·코딩테스트/프로그래머스
max([w if w >= h else h for w, h in sizes])

[프로그래머스]86491번 : 최소직사각형 

https://school.programmers.co.kr/learn/courses/30/lessons/86491

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


[python] 문제 풀이

def solution(sizes):
    max_w,max_h=0,0 
    answer = 0
    for w,h in sizes: 
        if w<h: #w<h이면
            w,h=h,w #w값과 h값 교환
        max_w = max(max_w,w)  #max_w에 가장 큰 w값 넣기
        max_h = max(max_h,h)  
    answer = max_w * max_h
    return answer

명함을 뒤집어서 가로에 긴 변들을 모으고, 세로에 짧은 변끼리 모아서 

모은 값들 중에 가장 큰 값들을 각각 변수에 저장


[추가] 리스트 컴프리 헨션

스터디원 풀이를 보니 반복문이나 조건문을 한줄로 간단하게 작성하여 가독성을 높인 풀이가 보임

 

 

리스트 컴프리헨션 이란?

- 리스트를 생성하는 효율적인 방법

- 반적인 for 루프와 조건문을 한 줄로 작성할 수 있어 코드가 더 간결해지고 가독성이 좋아짐

 

 

[표현식 for 요소 in 반복가능한객체 if 조건]
 

예시1) 기본 리스트 작성

num=[1,2,3,4]
squared = [n**2 for n in num]
print(squared) 
#[1,4,9,16]

예시2) 조건을 추가한 리스트 생성

num=[1,2,3,4]
even_squared = [n**2 for n in numbers if n%2 == 0]
print(even_squared)
#[4,16]

알아두면 좋은 보조

[]: 리스트

(): 제너레이터 생성

tuple(): 튜플

{}: 집합

{:}: 딕셔너리



 

그럼 이제 위 문제를 다시 풀어보자

 

방법1)

 

sizes 리스트에 들어 있는 (w,h) 쌍을 순회해서 항상 더 큰 값을 가로(w), 더 작은 값을 세로(h)로 정리합니다.

max(w,h) : 두 값 중 큰 값 선택, 이 값이 가로(w)로 사용

min(w,h) : 두 값 중 작은 값 선택, 이 값이 가로(h)로 사용

 

방법2)

 

방법3)

 

a) 가로 최대 값 계산 (max_w)

 

max([w if w >= h else h for w, h in sizes])

각 (w,h) 쌍에서 w가 h 보다 크거나 같으면 w 사용, 아니면 h 사용

 

b) 세로 최대 값 계산 (max_h)

 

max([w if w <= h else h for w, h in sizes])

각 (w,h) 쌍에서 w가 h 보다 작거나 같으면 w 사용, 아니면 h 사용


코드를 최적화 하기 위해선 내장 함수를 외워서 활용하는 것이 아니라
가장 간단한 수학적 해결법을 찾는 것이 중요! 

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[프로그래머스]67258 : 보석 쇼핑 | 투포인트 탐색  (1) 2024.10.28
[프로그래머스]150368: 이모티콘 할인 행사 | DFS  (2) 2024.10.21
[프로그래머스]43165: 타겟 넘버 | DFS  (0) 2024.10.14
[프로그래머스] 1154539 : Lv2 뒤에 있는 큰 수 찾기| 스택  (0) 2024.09.23
[프로그래머스] 12921번 : Lv1 소수 찾기 | 에라토스테네스의 체  (0) 2024.09.15
'코딩테스트/프로그래머스' 카테고리의 다른 글
  • [프로그래머스]150368: 이모티콘 할인 행사 | DFS
  • [프로그래머스]43165: 타겟 넘버 | DFS
  • [프로그래머스] 1154539 : Lv2 뒤에 있는 큰 수 찾기| 스택
  • [프로그래머스] 12921번 : Lv1 소수 찾기 | 에라토스테네스의 체
#코딩 공부
#코딩 공부
tildacoding 코딩 공부
  • #코딩 공부
    tildacoding
    #코딩 공부
  • 전체
    오늘
    어제
  • 글쓰기 관리자
  • Personal

    • 홈
    • 태그
    • 방명록
  • link

    • GITHUB
    • 분류 전체보기 (51)
      • Dev (12)
        • python (0)
        • 웹크롤링 (2)
        • 머신러닝 (3)
        • 딥러닝 (4)
        • 언어지능 딥러닝 (2)
        • SQL (1)
        • Spring (0)
      • 코딩테스트 (16)
        • 백준 (3)
        • 프로그래머스 (7)
        • 기타 문제 (2)
        • 코딩테스트를 위한 정리 (4)
      • Study (4)
        • 알고리즘 (2)
        • 자료구조 (2)
      • 대외활동 (18)
        • 에이블스쿨 (18)
        • 공모전 (0)
  • 공지사항

    • 루틴 skrrrrr
  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
#코딩 공부
[프로그래머스]86491번 최소직사각형 | 완전 탐색
상단으로

티스토리툴바