최소직사각형

yongju·2022년 11월 2일
0

Programmers

목록 보기
3/23
post-thumbnail

프로그래머스 [정답율 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)
profile
AI dev

0개의 댓글