728x90
📍 2차원 행렬에서 세로로 최댓값, 최솟값 갱신하기
세로 R
, 가로 S
인 2차원 행렬에서 세로로 최대값과 최솟값을 갱신할 때 어떻게 할까? 예를 들어 다음과 같은 2차원 행렬이 있다고 가정해보자.
'''
R, S = 10, 4
x...
xx..
.xx.
..xx
...x
....
#...
##..
.##.
..##
...#
'''
여기서 x
일 때 각 세로축에서의 최대값, #
일 때 각 세로축에서의 최소값을 구하려면 다음과 같이 구할 수 있다.
다음과 같이 가로길이만큼 빈 리스트를 선언해준 다음 현재 좌표가 x
일 때 해당하는 열을 빈리스트의 index
로 사용한다. 이때 비교해야하는 값은 i(row)
다. 높이는 row
값이기 때문이다. min
값도 마찬가지로 해당하는 열을 index
로 사용하고 그때의 row
값을 비교하여 더 작은값을 경신해주면 된다.
728x90
입력을 받아야하는 문제를 풀 때 arr = [input() for _ in range(R)]
로 선언해주면 되는데 input()
에도 list()
를 씌우지 않아도 되는 이유는 문자열에서도 인덱싱이 가능하기 때문이다.
R, S = 10, 4
arr = ['x...', 'xx..', '.xx.', '..xx', '....', '#...', '##..', '.##.', '..##', '...#']
max_dot = [-3333] * S
min_sharp = [1 << 14] * S
for i in range(R):
for j in range(S):
if arr[i][j] == 'x':
max_dot[j] = max(max_dot[j], i)
elif arr[i][j] == '#':
min_sharp[j] = min(min_sharp[j], i)
print(max_dot)
👉🏽 [1, 2, 3, 3]
print(min_sharp)
👉🏽 [5, 6, 7, 8]
반응형
'Python > 파이썬 문법 Tips' 카테고리의 다른 글
[ 파이썬(Python) ] 2차원 행렬에서 세로(column) 열만 추출하기 (0) | 2021.05.28 |
---|---|
[ 파이썬(Python) ] 여러 줄의 입력을 한 줄로 출력 하고 싶을 때 (0) | 2021.05.28 |
[ 파이썬(python) ] 범위가 큰 2차원 배열 / 문자열을 출력 할 때 (0) | 2021.05.27 |
[ 파이썬(python) ] n * n 행렬에서 target * target 크기만큼 자르기 (0) | 2021.05.20 |
[ 파이썬(python) ] 이중 반복문에서 print의 위치 별 출력 (0) | 2021.05.19 |
댓글