[그리디 알고리즘]이차원 리스트로 다중정렬하기/BOJ 1931

hyihyi·2022년 11월 17일
0

이차원 리스트의 정렬 방식은 데이터의 입력 순서를 통하여 조정할 수 있다.

두개의 숫자를 한줄에 입력받고 총 5줄을 입력받을 때 두번째 숫자를 기준으로 정렬하고 싶으면

N = int(input())
A = [[0] * 2 for _ in range(N)] # [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
for i in range(N):
    S, E = map(int, input().split())
    A[i][0] = E
    A[i][1] = S
print(A)
A.sort()
print(A)

ex)
5
1 7
9 2
4 7
3 7
8 3

[[7, 1], [2, 9], [7, 4], [7, 3], [3, 8]]
[[2, 9], [3, 8], [7, 1], [7, 3], [7, 4]]

⭐️E,S 순서로 정렬됨

📢앞의 순서가 먼저 정렬됨

3차원 리스트도 마찬가지로 앞의 순서가 먼저 정렬됨

N, S, E = map(int, input().split())
    A[i][0] = E
    A[i][1] = S
    A[i][2] = N

⭐️E, S, N 순서로 정렬됨


이차원 리스트 정렬 / BOJ 1931

N = int(input())
A = [[0] * 2 for _ in range(N)]
for i in range(N):
    S, E = map(int, input().split())
    A[i][0] = E # 종료 시각 우선 정렬이 먼저이므로 0번째에 종료 시각을 먼저 저장
    A[i][1] = S
A.sort()
count = 0
end = -1

for i in range(N):
    # print("for loop:", A[i][1], end)
    if A[i][1] >= end: # 시작시간이 앞의 종료시간과 같거나 클 때
        end = A[i][0] # 비교할 변수에 종료시각 넣기
        count += 1
        # print("end:", end)

print(count)

📢 다중 정렬해야 할 때

#정렬해야 할 값이 두 개일 때
A = [[0] * 2 for _ in range(N)]
S, E = map(int, input().split())

#우선 정렬해야 할 값(E)을 이중 리스트의 첫 번째 항목에 넣고
A[i][0] = E

#두 번째 값(S)을 두 번째 항목에 넣어 리스트를 만든 후
A[i][1] = S

#sort 하면 정렬된다. 
A.sort()
profile
자유롭게 쓴 나의 자유로운 Development voyage⛵

0개의 댓글