<aside>
💬 lv0
, 행렬
, 조건 검사
M x N 크기의 정수 행렬이 주어집니다. 이 행렬의 모든 요소가 주어진 조건의 배수인지 확인하는 코드를 작성해주세요. 예를 들어, 주어진 조건이 '3'이라면, 행렬의 모든 요소가 3의 배수일 때 True를, 그렇지 않을 경우 False를 반환합니다.
입력 (행렬, 조건) | 출력 (조건 만족 여부) |
---|---|
([[2, 4, 6], [8, 10, 12]], 2) | True |
([[1, 2, 3], [4, 5, 6]], 5) | False |
([[1, 3, 5], [7, 9, 11]], 2) | False |
각 행렬에서 주어진 조건을 만족하는지 여부를 검사하여 True 또는 False로 결과를 반환합니다.
</aside>
lambda
함수def solution(data):
matrix, div = data **#1 초기 변수 설정**
condition = lambda x: (x % div) == 0
for row in matrix: **#2 모든 행 순회**
if not all(condition(value) for value in row):
return False
return True **#3 결과 반환**
초기 변수 설정
data
의 첫번째 값을 matrix
, 두번째 값을 div
에 할당한다.
condition
에 lambda
를 이용해 함수 식을 선언한다. 만약 condition
에 인자로 들어온 데이터의 각 값을 div
로 나누었을때 0이라면 True
, 아니라면 False
를 반환한다.
모든 행 순회
matrix
의 모든 행 row
를 순회한다.row
의 각 요소를 value
를 통해 순회하는 방식이다.
만약 condition
에 value
를 대입한 결과가 참이라면 True, 아니라면 False를 반환한다.if not all(condition(value))
→ 만약 대입한 결과들 중 False가 하나라도 존재한다면,
if not False
가 되므로 아래 return False
가 실행된다.결과 반환
위의 조건문을 통과했다면 모든 요소가 배수, 즉 참이라는 뜻이므로 True를 반환한다.
함수 lambda
lambda 인자: 표현식
함수 all()
all(리스트)
**형태로 사용된다.all()
def solution(data):
return all(sum(row) % data[1] == 0 for row in data[0]) **#1,2 모든 행 순회, 결과 반환**
모든 행 순회
for문으로 모든 행을 순회한다.
여기서 data
는 (행렬, 조건)
형식으로 주어지므로 data[0]
은 행렬, data[1]
은 조건을 나타낸다.
만약 각 행의 sum
값, 즉 행의 각 요소들을 더한 값이 조건값에 나누어 떨어진다면 True, 아니라면 False를 반환한다.
결과 반환
all()
에 의해서 각 행의 sum
값 중 하나라도 False가 존재한다면 False, 아니라면 True를 반환한다.