<aside>
💬 lv0
, 행렬
, 조건 검사
M x N 크기의 정수 행렬이 주어집니다. 이 행렬에서 특정 조건을 만족하는 요소의 개수와 그 요소들의 합을 구하는 코드를 작성해주세요. 예를 들어, 조건이 '5 이상인 값'이라면, 행렬에서 5 이상인 값들의 총 개수와 그 합을 계산합니다.
입력 (행렬, 조건) | 출력 (조건을 만족하는 요소의 개수, 합) |
---|---|
([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 5) | (5, 35) |
([[10, 20], [30, 40]], 15) | (3, 90) |
각 행렬에서 주어진 조건을 만족하는 요소들을 찾아 그 개수와 합을 반환합니다.
</aside>
def solution(data): **#1 함수 정의**
matrix, condition = data **#2 데이터 분리**
count = 0 **#3 요소의 개수 초기화**
total_sum = 0 **#4 요소의 합 초기화**
for row in matrix: **#5 행 탐색**
for item in row: **#6 열 탐색**
if item >= condition: **#7 조건 검사**
count += 1 **#8 요소의 개수 갱신**
total_sum += item **#9 요소의 합 갱신**
return count, total_sum **#10 요소의 개수, 요소의 합 반환**
함수 정의
코드의 첫 부분에서 solution
이라는 함수를 정의합니다. 이 함수는 하나의 인자 data
를 받습니다. data
는 조건을 만족하는 요소의 개수와 그 요소의 합을 찾을 대상이 되는 행렬과 조건입니다. 여기서 조건은 정수형 숫자입니다.
데이터 분리
data
의 행렬과 조건을 matrix
, condition
변수로 언패킹합니다.
요소의 개수 초기화
조건을 만족하는 요소의 개수 count
에 초깃값으로 0을 할당합니다.
요소의 합 초기화
조건을 만족하는 요소의 합 total_sum
에 초깃값으로 0을 할당합니다.
행 탐색
행렬 matrix
에서 순차적으로 1차원 행 배열을 row
에 할당하면서 탐색합니다.
열 탐색
탐색한 행 배열 row
에서 순차적으로 열에 해당하는 숫자 데이터를 item
에 할당하면서 탐색합니다.
조건 검사
탐색 숫자 item
이 조건 숫자 condition
이상이라는 조건에 맞는 지 조건 검사를 진행합니다.
요소의 개수 갱신
item
이 조건을 만족하는 숫자라면 조건을 만족하는 요소의 개수가 1 증가합니다. 그러므로 여기서 count
에 1을 추가하여 요소의 개수를 갱신합니다.
요소의 합 갱신
요소의 합은 조건을 만족하는 요소들을 더한 값이므로, 기존 요소의 합 total_sum
에 바로 조건을 만족하는 item
을 더해주어 요소의 합을 갱신합니다.
요소의 개수, 요소의 합 반환
이중 for
문을 통해 item
을 탐색하면서 최종 갱신된 count
와 total_sum
을 요소의 개수와 요소의 합으로서 반환합니다.
행렬
기본 형태: [ 배열, 배열, 배열, …. ]
개념: 행렬은 2차원 배열입니다. 행렬 안의 1차원 배열은 행이 되고, 해당 행에서의 인덱스는 열이 됩니다. 그러므로 특정 행렬이 존재할 때, 행렬의 데이터는 행렬[행][열]
로 접근할 수 있습니다. 이를 이중 for
문으로 풀어서 접근한다면, 첫 번째 for
문에서 접근하고자 하는 행을 인덱싱하고, 두 번째 for
문에서는 선택한 행 배열에서 접근하고자 하는 데이터의 열을 인덱싱합니다.
mat = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# --------------------------------------
# 표현 변경
# --------------------------------------
mat = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
# 행렬 표시
mat = [[(0,0), (0,1), (0,2)],
[(1,0), (1,1), (1,2)],
[(2,0), (2,1), (2,2)],
# 행렬 접근
# 1. 행 접근
# mat[행]
# 0번째 행
mat[0] # [1, 2, 3]
# 2. 행과 열 접근
# mat[행][열]
# 0번째 행에서 1번째 열
mat[0][1] # 2
# 이중 for 문
for row in mat: #1 행 배열 순차적으로 선택
for col in row: #2 선택된 행 배열에서 열을 순차적으로 선택