프로그래머스 코딩테스트 연습 최소직사각형
첫번째 시도 때 쉽게 푼 문제이지만 성능 최적화가 전혀 안됐다는 생각이 든다.
def solution(sizes):
big = []
small = []
for x,y in sizes:
big.append(max(x,y))
small.append(min(x,y))
return sorted(big)[-1]*sorted(small)[-1]
지역변수로 리스트 두개에 for룹 돌려서 요소들을 추가하고 각각 소트해서 마지막 값 접근까지..
생각해보니 리스트를 쓸 이유가 전혀 없었다. 각 명함사이즈의 큰 변과 작은 변중 제일 큰값만 업데이트해주면 되어서 바꾸어 주었다
def solution(sizes):
big = 0
small = 0
for x,y in sizes:
mx = max(x,y)
mn = min(x,y)
if(big < mx):
big = mx
if(small < mn):
small = mn
return big * small
다른 사람의 풀이 중 몇개를 추려 보았다
def solution(sizes):
return max(max(x) for x in sizes) * max(min(x) for x in sizes)
간단하면서도 한눈에 논리의 흐름이 보여서 좋은 것 같다
solution = lambda sizes: max(sum(sizes, [])) * max(min(size) for size in sizes)
람다를 쓰는 것은 아직 자신이 없기 때문에..
첫번째 시도 개선된코드 한줄코드 람다
테스트 1 〉 통과 (0.00ms, 10.3MB) 통과 (0.00ms, 10.2MB) 통과 (0.00ms, 10.3MB) 통과 (0.01ms, 10.1MB)
테스트 2 〉 통과 (0.01ms, 10.2MB) 통과 (0.00ms, 10.2MB) 통과 (0.01ms, 10.3MB) 통과 (0.01ms, 10.2MB)
테스트 3 〉 통과 (0.01ms, 10.3MB) 통과 (0.00ms, 10.2MB) 통과 (0.01ms, 10.1MB) 통과 (0.01ms, 10.2MB)
테스트 4 〉 통과 (0.01ms, 10.3MB) 통과 (0.01ms, 10.3MB) 통과 (0.01ms, 10.2MB) 통과 (0.01ms, 10.1MB)
테스트 5 〉 통과 (0.01ms, 10.3MB) 통과 (0.01ms, 10.2MB) 통과 (0.01ms, 10.3MB) 통과 (0.01ms, 10.2MB)
테스트 6 〉 통과 (0.01ms, 10.2MB) 통과 (0.01ms, 10.3MB) 통과 (0.01ms, 10.3MB) 통과 (0.01ms, 10.1MB)
테스트 7 〉 통과 (0.01ms, 10.3MB) 통과 (0.01ms, 10.2MB) 통과 (0.01ms, 10.2MB) 통과 (0.01ms, 10.1MB)
테스트 8 〉 통과 (0.02ms, 10.2MB) 통과 (0.01ms, 10.1MB) 통과 (0.01ms, 10.2MB) 통과 (0.02ms, 10.1MB)
테스트 9 〉 통과 (0.03ms, 10.2MB) 통과 (0.01ms, 10.2MB) 통과 (0.02ms, 10.3MB) 통과 (0.02ms, 10.1MB)
테스트 10 〉 통과 (0.09ms, 10.2MB) 통과 (0.03ms, 10.3MB) 통과 (0.04ms, 10.3MB) 통과 (0.09ms, 10.2MB)
테스트 11 〉 통과 (0.10ms, 10.1MB) 통과 (0.06ms, 10.2MB) 통과 (0.07ms, 10.2MB) 통과 (0.17ms, 10.2MB)
테스트 12 〉 통과 (0.24ms, 10.3MB) 통과 (0.09ms, 10.3MB) 통과 (0.11ms, 10.2MB) 통과 (0.21ms, 10.2MB)
테스트 13 〉 통과 (0.89ms, 10.3MB) 통과 (0.29ms, 10.3MB) 통과 (0.49ms, 10.2MB) 통과 (1.71ms, 10.4MB)
테스트 14 〉 통과 (1.13ms, 10.5MB) 통과 (0.58ms, 10.4MB) 통과 (0.63ms, 10.4MB) 통과 (6.69ms, 10.4MB)
테스트 15 〉 통과 (2.74ms, 10.6MB) 통과 (0.88ms, 10.4MB) 통과 (0.97ms, 10.3MB) 통과 (17.35ms, 10.6MB)
테스트 16 〉 통과 (3.94ms, 10.9MB) 통과 (1.47ms, 10.6MB) 통과 (1.49ms, 10.5MB) 통과 (46.64ms, 10.9MB)
테스트 17 〉 통과 (4.87ms, 11.1MB) 통과 (2.00ms, 10.9MB) 통과 (3.55ms, 10.8MB) 통과 (101.70ms, 11.2MB)
테스트 18 〉 통과 (7.67ms, 11.3MB) 통과 (2.26ms, 10.9MB) 통과 (2.54ms, 10.8MB) 통과 (142.15ms, 11.3MB)
테스트 19 〉 통과 (5.64ms, 11.7MB) 통과 (2.47ms, 11.4MB) 통과 (3.21ms, 11.4MB) 통과 (233.73ms, 11.9MB)
테스트 20 〉 통과 (9.49ms, 11.6MB) 통과 (3.12ms, 11.3MB) 통과 (5.83ms, 11.3MB) 통과 (267.63ms, 11.9MB)