나의 답 - 결국은 못풀..었..다. ㅠ
def check(filter_list,value):
for i in filter_list:
if value[1] < i[0] and value[0] > i[1]:
return 0
return 1
def solution(sizes):
karo = []
sero = []
for edges in sizes:
karo.append(edges[0])
sero.append(edges[1])
karo.sort(reverse=True)
sero.sort(reverse=True)
i=1
max_k=karo[i]
max_s=sero[i]
answer = max(karo)*max(sero) #가로 중에 젤 큰 값, 세로 중에 젤 큰 값
for i, value in enumerate(sizes):
if value[1] <= max_k and value[0] <= max_s:
filter_list = [i for i in sizes if i != value ]
if check(filter_list, value) == 1:
max_k = value[1]
max_s = value[0]
print(max_k, max_s)
return answer
너무 복잡하게 생각했다. . 하나하나 값을 바꿔서 조건에 부합하는 지 확인하려고 했는데 머리속에서 도저히 생각이 나지 않았다..
다른 사람 풀이
def solution(sizes):
row = 0
col = 0
for a, b in sizes:
if a < b:
a, b = b, a
row = max(row, a)
col = max(col, b)
return row * col
그냥 값들 중에서 row 중에 가장 큰 값, col 중에 가장 큰 값을 넣었는데,
if문이 관건이었던 것 같다. 값이 큰 게 row로 값이 작은게 col로 설정하면 되는 구나..
왜냐하면 그냥 뒤집어서 row, col을 관리해주면 되니까.. 위처럼 바꿔끼어놓고.. !!
비슷한 풀이 22
def solution(sizes):
sizes = [sorted(s) for s in sizes]
return max([x[0] for x in sizes]) * max([x[1] for x in sizes])
두 개의 값 (row, col) 중에 큰 값이 row로 작은 값이 col로 설정하는군..
sorted(s) -> 리스트 s의 요소들을 내림차순으로 정리한 것.
row들 중에서 가장 큰 값, col들 중에서 가장 큰 값을 설정하면 되는 것..
'코딩테스트' 카테고리의 다른 글
[이것이 코딩테스트다] Chapter 2 구현 실전문제 왕실의 나이트 (0) | 2024.03.18 |
---|---|
[프로그래머스] 완전탐색 - 카펫 (2) | 2024.03.18 |
[이것이 코딩테스트다] Chapter 2. 구현 (0) | 2024.03.16 |
[이것이 코딩테스트다] Chapter 02. 그리디 (0) | 2024.03.08 |
[프로그래머스] 탐욕법(Greedy) - 체육복 (1) | 2024.03.04 |