본문 바로가기
IT/Python Quiz

[python] 2차원 리스트 코딩 퀴즈

by Echinacea 2025. 2. 20.
반응형

 

문제 1

2차원 리스트의 행별 합 구하기 주어진 2차원 리스트에서 각 행의 합을 계산하는 코드를 작성하세요.

🔹 입력 예시

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

🔹 출력 예시

[6, 15, 24]

 

 

문제 2

2차원 리스트의 열별 평균 구하기 주어진 2차원 리스트에서 각 열의 평균을 계산하는 코드를 작성하세요.

🔹 입력 예시

matrix = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]

🔹 출력 예시

[40.0, 50.0, 60.0]

 

 

문제 3

2차원 리스트의 대각선 원소 추출하기 주어진 2차원 리스트에서 왼쪽 위에서 오른쪽 아래로 내려가는 대각선 원소를 추출하는 코드를 작성하세요.

🔹 입력 예시

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

🔹 출력 예시

[1, 5, 9]

 

 

문제 4

2차원 리스트에서 특정 값 찾기 주어진 2차원 리스트에서 특정 값이 존재하는 위치(행, 열)를 반환하는 코드를 작성하세요.

🔹 입력 예시

matrix = [[3, 5, 7], [2, 8, 6], [1, 9, 4]]
target = 8

🔹 출력 예시

(1, 1)

 

 

문제 5

2차원 리스트를 90도 회전하기 주어진 2차원 리스트를 시계 방향으로 90도 회전하는 코드를 작성하세요.

🔹 입력 예시

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

🔹 출력 예시

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

 

 

 

 

 

 

 

 

 

 

 

 

✅ 정답과 해설

문제 1 정답

✅ 리스트 컴프리헨션 사용

row_sums = [sum(row) for row in matrix]

✅ 리스트 컴프리헨션 사용하지 않음

row_sums = []
for row in matrix:
    row_sums.append(sum(row))

🔍 설명: sum()을 이용해 각 행의 합을 계산합니다.


문제 2 정답

✅ 리스트 컴프리헨션 사용

col_averages = [sum(col) / len(col) for col in zip(*matrix)]

✅ 리스트 컴프리헨션 사용하지 않음

col_averages = []
for i in range(len(matrix[0])):
    col_sum = sum(row[i] for row in matrix)
    col_averages.append(col_sum / len(matrix))

🔍 설명: zip(*matrix)를 사용해 열을 묶고 sum()을 이용해 평균을 계산합니다.

📌 zip 함수란?

  • zip(*matrix)는 2차원 리스트에서 열을 추출하는 방법입니다.
  • *matrix는 리스트의 언패킹을 의미하며, 이를 zip()과 함께 사용하면 행 대신 열을 기준으로 데이터를 묶을 수 있습니다.

문제 3 정답

✅ 리스트 컴프리헨션 사용

diagonal_elements = [matrix[i][i] for i in range(len(matrix))]

✅ 리스트 컴프리헨션 사용하지 않음

diagonal_elements = []
for i in range(len(matrix)):
    diagonal_elements.append(matrix[i][i])

🔍 설명: matrix[i][i]는 행과 열의 인덱스가 동일한 위치의 값을 가져옵니다. 이는 왼쪽 위에서 오른쪽 아래로 내려가는 대각선의 원소를 의미합니다. 예를 들어, matrix[0][0], matrix[1][1], matrix[2][2]와 같이 동작합니다.


문제 4 정답

✅ 리스트 컴프리헨션 사용

position = next((i, j) for i, row in enumerate(matrix) for j, num in enumerate(row) if num == target)

✅ 리스트 컴프리헨션 사용하지 않음

position = None
for i, row in enumerate(matrix):
    for j, num in enumerate(row):
        if num == target:
            position = (i, j)
            break

🔍 설명: enumerate()를 이용해 리스트를 탐색하면서 특정 값의 위치를 찾습니다.


문제 5 정답

✅ 리스트 컴프리헨션 사용

rotated_matrix = [[row[i] for row in matrix[::-1]] for i in range(len(matrix[0]))]

✅ 리스트 컴프리헨션 사용하지 않음

rotated_matrix = []
for i in range(len(matrix[0])):
    new_row = []
    for row in reversed(matrix):
        new_row.append(row[i])
    rotated_matrix.append(new_row)

🔍 설명: 행을 역순으로 뒤집고 열을 행으로 변환하여 90도 회전된 행렬을 만듭니다.


 

반응형

댓글