프로그래머스 Lv1 문제입니다. 실전에 대비하기 위해 30분 시간제한을 두고 풀었습니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/86491
[나의 풀이]
⌛ 17분 소요
def solution(sizes):
answer = 0
start = sorted(sizes[0],reverse=True)
big = start[0]
small = start[1]
for size in sizes:
size = sorted(size,reverse=True)
w, h = size
if w>=big :
big = w
if h>=small:
small = h
answer = big*small
return answer
[[60, 50], [30, 70], [60, 30], [80, 40]] 와 같이 명함의 가로,세로 길이들이 입력되었을 때 모든 지갑 사이즈를 수납할 수 있는 지갑의 크기를 구하는 문제입니다. 가로,세로 길이 중 큰 길이와 작은 길이를 갱신하여 최대사이즈을 연산하면 되는 문제였습니다.🚗🚗🚗
[다른 사람의 풀이1]
def solution(sizes):
return max(max(x) for x in sizes) * max(min(x) for x in sizes)
'나의 풀이' 코드와 같은 원리를 간단히 구현한 방식입니다. 입력된 가로, 세로 길이(sizes)에서 max(최댓값 리스트) * max(최솟값 리스트)로 표현하여 간결히 해결한 모습입니다.
[다른 사람의 풀이2]
def solution(sizes):
allWidth = []
allHeight = []
for size in sizes:
if size[0] < size[1]:
size[0], size[1] = size[1], size[0]
allWidth.append(size[0])
allHeight.append(size[1])
return max(allWidth) * max(allHeight)
최댓값 리스트, 최솟값 리스트를 새로운 리스트에 저장하고 각 최댓값을 연산하여 최대 사이즈를 구하는 풀이입니다.🦝🦝🦝
감사합니다.