Challenges/구름톤 챌린지

[구름톤 챌린지 Week2(2)] 완전 탐색 중심 / 바둑판 원하는 값으로 채우는 방법

그레이먼지 2023. 8. 24. 19:22

입력받는 정보를 2차원 배열에 저장해야 하는 경우가 발생한다. 이때 살짝 멈칫,하게 되지 않도록 리마인드 차 이 글을 쓴다.

사실 코드를 쓰기 나름이지만, 일단 다음과 같다.

방법 : 1차원 배열을 선언 후, 안에 값을 리스트(1차원)로 지정

matrix = []

for _ in range(N):
    row = list(input().split())
    matrix.append(row)

방법2 : 마찬가지를 리스트 컴프리핸션으로

B = [input().split()) for _ in range(N)]

 

2차원 배열에서 최댓값을 찾는 방법

처음에는 max(R)이라고 단순히 하면 될 줄 알았는데, 그게 아니었다.

max(max(row) for row in R)

 

list comprehension과 내장 함수 max()를 사용하여 2차원 배열에서 최대값을 찾습니다.

1) inner max(row) : 이 부분은 각 행(row)에서 최대값을 찾습니다. 2차원 리스트 R의 각 행을 순회하며, 그 행의 최대값을 찾습니다.

예를 들어, R이 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]라면, 이 부분은 [3, 6, 9]라는 새로운 리스트를 만듭니다.

각 행에서의 최대값 3, 6, 9를 찾아낸 것입니다.

 

2) outer max(...): 이 부분은 위에서 찾아낸 각 행의 최대값들 중에서 또 최대값을 찾습니다. [3, 6, 9]에서 최대값은 9입니다.

3) list Comprehension for row in R: 이 부분은 2차원 리스트 R의 모든 행을 순회합니다.

종합하면, 이 한 줄의 코드는 2차원 배열 R의 모든 원소를 검사하여 최대값을 찾아내는 작업을 수행합니다.

시간복잡도는 O(N^2) 입니다.