(30분)
1. 접근방식
1.
문제의 관건 : 어떤 명함을 뒤집을 것인가? > 가로값 중 최대값 * 세로값 중 최대값
2.
2차원 배열의 원소들을 모두 뽑아서 하나의 리스트로 나열한다
3.
크기 = [i]/2 값 * [i]값.
2. 기본 코드에 대한 설명
1차 시도
def solution(sizes):
#sizes : [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]]
answer = []
for i in sizes:
for j in i:
answer.append(j)
answer.sort()
#answer : [3,5,7,7,8,10,12,14,15,15]
ind = (len(answer) // 2 ) -1 #리스트의 원소 개수는 항상 짝수이다.
num = max(answer) * answer[ind]
return num
Python
복사
결과
3. 추가적으로 개선한 코드에 대한 설명
1.
2차원 배열의 원소를 하나로 합쳐 오름차순 정렬 후, 두 개로 나눈다.
2.
두 배열의 max 값 곱하기
def solution(sizes):
#sizes : [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]]
answer = []
for i in sizes:
for j in i:
answer.append(j)
answer.sort() #answer : [3,5,7,7,8,10,12,14,15,15]
array1 = answer[:len(answer)//2]
array2 = answer[(len(answer)//2):]
return array1[-1] * array2[-1]
Python
복사
⇒ 같은 문제 발생. ???
4. 사용 라이브러리 정리
-
5. 기타
-