프로그래머스 [정답율 68%]
문제 정리
사용한 파라미터:
sizes(list_int) : 지갑의 크기를 받아옴([["가로1","세로1"],["가로2","세로2"]]형태)
tmp(int) : 가로세로 길이 교환시 잠시 거쳐가는 공간
width(list_int) : 가로 길이 저장공간
height(list_int) : 세로 길이 저장공간
max_width(int) : 가로의 최대 길이
max_height(int) : 세로의 최대 길이
풀이방법:
코드
def solution(sizes):
for i in range(len(sizes)):
if sizes[i][0]<sizes[i][1]:#가로<세로이면, 가로가 더 길게 바꿔줌
tmp=sizes[i][0]
sizes[i][0]=sizes[i][1]
sizes[i][1]=tmp
width=[x[0] for x in sizes]
height=[x[1] for x in sizes]
max_width=max(width)
max_height=max(height)
return max_width*max_height
코드 설명
for i in range(len(sizes)):
if sizes[i][0]<sizes[i][1]:#가로<세로이면, 가로가 더 길게 바꿔줌
tmp=sizes[i][0]
sizes[i][0]=sizes[i][1]
sizes[i][1]=tmp
전체 가로의 길이가 전체 세로의 길이보다 크게 바꿔줌.
tmp에 임시 저장하여 가로와 세로의 값 서로 바꿈.
width=[x[0] for x in sizes]
height=[x[1] for x in sizes]
가로끼리 세로끼리 모아줌.
입력받은 sizes에서 첫번째(index=0)인 값들을 모아서 width에 저장.
두번째(index=1)인 값들을 모아서 height에 저장.
max_width=max(width)
max_height=max(height)
return max_width*max_height
가로와 세로의 최고 거리 구하여 넓이 구하여 반환.
.
.
.
.
기존 접근 방식
가장 긴 세로의 길이를 구해서 그 인덱스의 가로와 세로만 서로 값을 변경함. 제출에서 오류 6개 발견.~~
width=[x[0] for x in sizes]
height=[x[1] for x in sizes]
max_width=max(width)
max_height=max(height)
repeat=height.count(max_height)#중복개수 찾기
for i in range(repeat+1):
changing_index=height.index(max_height)
if max_height>width[changing_index]:#세로 최대길이가 가로의 길이보다 클경우
#전체가로>세로 형태로 만들어줌
print(max_height)
height[changing_index]=width[changing_index]
width[changing_index]=max_height
max_width=max(width)
max_height=max(height)
print(max_height)