본문 바로가기

파이썬(프로그래머스쿨)

[파이썬] 리스트안에 2차원배열의 위치바꾸기!( feat. 최소 직사각형 문제)

반응형

 

안녕하세요 이번에 소개할 파이썬 기능은 2차원배열의 리스트가 주어져있을때, 조건에 맞도록 위치를 바꿔주는 코딩을 구현해보고자 합니다.

 

먼저 처음의 리스트에 대한 설명입니다.

 

 

1. sizes라는 리스트에는 가로 길이, 세로길이가 2차원배열로 쌍으로 들어가있습니다.  

sizes = [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 
 
 
이때 우리는 sizes리스트 안의 각 2차원 배열안의 리스트(가로,세로)들의 순서가 마음에 들지 않습니다.
 
가로 세로 중 더 큰값이 앞으로 가게 한다음 sizes리스트를 다시 만들고 싶습니다.
이렇게 말이죠 .
 
sizes = [[10, 7], [12, 3], [15, 8], [14, 7], [15, 5]]
 
 
제가 생각한 큰게 앞으로 가고, 작은게 뒤로 가게 하는 방법은 이것입니다.
 
코드를 간단히 설명하자면 각각의 리스트 안의 2차원 리스트값들 안에서 서로 비교한다음, 그 값들이 크다면 (if문), 2차원리스트의 위치를 서로 바꿔라 라는 뜻입니다. 
 
 
 
 
for 문을 통해 i라는 변수를 설정하고, i는 범위 0 부터 sizes라는 리스트 명의 개수까지로 설정합니다.
 
지금 sizes의 리스트 크기는 5개([[10, 7] - 1개, [12, 3] -2개, [15, 8]-3개, [14, 7]-4개, [15, 5]-5개])이므로 총 0부터 5까지 의 반복을 하겠군요.
 
 
 
그다음 만약(if문) sizes[i][0] 이 sizes[i][1]보다 작거나 같으면, sizes[i][0] 에  sizes[i][1] 값을 넣어주고,
sizes[i][1] 값에 sizes[i][0]을 넣어라 라는 뜻입니다.   
 
sizes[i][0] : i는 0~5까지의 숫자이고, 위 식이 완료 될 때마다 i값은 1이 추가됩니다.
맨처음에는 sizes[i][0] 의 값은 sizes[0][0]으로 시작하겠네요!  

네 이렇게 오늘은 2차원 리스트 안의 리스트값의 순서를 변경해보았습니다! 감사합니다.

 

 

아래 내용은 프로그래머스스쿨의 문제인 최소 직사각형 문제를 푼 제 식입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
def solution(sizes):
    answer = 0
    max_val_ga = 0
    max_val_se = 0
    for i in range(0len(sizes)):
        if sizes[i][0<= sizes[i][1]:
            sizes[i][0], sizes[i][1= sizes[i][1], sizes[i][0]
 
        if max_val_ga <= sizes[i][0]:
            max_val_ga = sizes[i][0]
 
        if max_val_se <= sizes[i][1]:
            max_val_se = sizes[i][1]
 
    answer = max_val_se*max_val_ga
 
    return answer
cs

식을 설명하자면, sizes 에서 리스트를 받아왔을때, 이 값의 2중리스트 값들의 각각을 순서대로 정렬합니다.

sizes = [[10, 7], [12, 3], [15, 8], [14, 7], [15, 5]]

그 뒤에 왼쪽에 있는 값( 10, 12, 15, 14, 15)들과 오른쪽에 있는 값(7, 3, 8, 7, 5)의 값들 중에 큰 값을 찾고 싶습니다.

 

 max_val_ga, max_val_se 가 각각 최대 가로 길이, 최대 세로길이 인데, 여기값을 가장 큰 왼쪽값, 가장 큰 오른쪽 값을 저장한 뒤 이  max_val_ga, max_val_se 를 서로 곱한 값을 출력(answer)한 식이 되겠습니다.

 
 

https://school.programmers.co.kr/learn/courses/30/lessons/86491

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

반응형