반응형
문제 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도 회전된 행렬을 만듭니다.
반응형
'IT > Python Quiz' 카테고리의 다른 글
[Python] 슬라이싱 특집 퀴즈3 (0) | 2025.02.20 |
---|---|
[Python] 슬라이싱 특집 퀴즈2 (0) | 2025.02.20 |
[Python] 슬라이싱 특집 퀴즈1 (0) | 2025.02.20 |
[Python] math.ceil() 활용 미니 코딩테스트 문제 (0) | 2025.02.20 |
[python] 리스트 컴프리헨션 코드 작성 연습4 (0) | 2025.02.20 |
[python] 리스트 컴프리헨션 코드 작성 연습3 (0) | 2025.02.20 |
[python] 리스트 컴프리헨션 코드 작성 연습2 (0) | 2025.02.20 |
[Python] 초급 퀴즈23 - 리스트 컴프리헨션 심화 (0) | 2025.02.20 |
댓글