<aside>
💬 lv0
, 행렬
, 조건 검사
M x N 크기의 정수 행렬이 주어집니다. 이 행렬에서 특정 범위에 해당하는 값들의 최대값과 최소값을 구하는 코드를 작성해주세요. 예를 들어, 범위가 '3 이상 7 이하인 값'이라면, 행렬에서 3 이상 7 이하인 값들 중 최대값과 최소값을 계산합니다.
입력 (행렬, 범위) | 출력 (범위 내 요소의 최대값, 최소값) |
---|---|
([[1, 2, 3], [4, 5, 6], [7, 8, 9]], (3, 7)) | (7, 3) |
([[10, 21], [32, 45]], (20, 40)) | (40, 21) |
각 행렬에서 주어진 범위에 해당하는 요소들을 찾아 그 중 최대값과 최소값을 반환합니다.
</aside>
def solution(data): **#1 함수 정의**
matrix, range_values = data **#2 데이터 분리**
min_value, max_value = float("inf"), float("-inf") **#3 최솟값, 최댓값 초기화**
lower_bound, upper_bound = range_values **#4 범위의 시작점, 종료점 정의**
for row in matrix: **#5 행 탐색**
for item in row: **#6 열 탐색**
if lower_bound <= item <= upper_bound: **#7 조건 검사**
min_value = min(min_value, item) **#8 최솟값 갱신**
max_value = max(max_value, item) **#9 최댓값 갱신**
return (max_value, min_value) if min_value != float("inf") else (None, None) **#10 최댓값, 최솟값 반환**
함수 정의
코드의 첫 부분에서 solution
이라는 함수를 정의합니다. 이 함수는 하나의 인자 data
를 받습니다. data
는 조건을 만족하는 요소의 개수와 그 요소의 합을 찾을 대상이 되는 행렬과 범위입니다. 여기서 범위는 범위의 시작점과 범위의 종료점으로 이루어져 있습니다.
데이터 분리
data
의 행렬과 범위를 matrix
, range_values
로 언패킹합니다.
최솟값, 최댓값 초기화
범위 내 요소의 최솟값 min_value
에 초깃값으로 양의 무한대 float("inf")
를 할당합니다. 범위 내 요소의 최댓값 max_value
에 초깃값으로 음의 무한대 float("-inf")
를 할당합니다.
범위의 시작점, 종료점 정의
범위 range_values
에서 범위의 시작점, 범위의 종료점을 lower_bound
, upper_bound
로 언패킹합니다.
행 탐색
행렬 matrix
에서 1차원 행 배열 row
를 탐색합니다.
열 탐색
탐색한 행 배열 row
에서 열 데이터 item
을 탐색합니다.
조건 검사
if lower_bound <= item <= upper_bound:
를 통해 탐색 숫자인 item
이 범위 내에 존재하는지 검사합니다.
최솟값 갱신
item
이 조건에 만족하면 min
함수를 이용하여 최솟값 min_value
와 item
중 가장 작은 값을 구합니다. 구한 가장 작은 값을 min_value
에 할당하여 최솟값을 갱신합니다.
최댓값 갱신
max
함수를 이용하여 최댓값 max_value
를 갱신합니다.
최댓값, 최솟값 반환
삼항 연산자를 이용하여 최솟값이 갱신이 되는 경우 최댓값, 최솟값으로 (max_value, min_value)
를 반환하고, 최솟값이 갱신되지 않고 양의 무한대인 경우, (None, None)을 반환합니다.