코딩테스트

[프로그래머스][위클리챌린지] 8주차 - ?

pythaac 2021. 9. 27. 18:04
프로그래머스 코딩테스트 위클리 챌린지의 문제입니다.

https://programmers.co.kr/learn/challenges?tab=weekly_challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

문제

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

 

코딩테스트 연습 - 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

 

내가 작성한 코드

def solution(sizes):
    mx, mn = [], []
    for a, b in sizes:
        mx.append(max(a, b))
        mn.append(min(a, b))
    return max(mx) * max(mn)
  • 문제접근방식
    • 명함들의 가로길이와 세로길이 중 더 큰 길이끼리, 더 작은 길이끼리 비교
      - 명함1이 가로 80, 세로 70, 명함2가 가로 50, 세로 90이면 mx = [80, 90], mn = [70, 50]
    • 더 큰 길이 중 최대값, 더 작은 길이 중 최대값의 곱을 반환

 

다른 사람이 작성한 코드

def solution(sizes):
    return max(max(x) for x in sizes) * max(min(x) for x in sizes)
  • 코드가 깔끔하다
  • 아쉬운 점은 sizes를 2번 탐색

 

기억해야할 것

  • 처음에 파라메트릭 서치가 떠올랐다가, 더 간단할 것 같아서 고민을 더 했다