울산 내려가는 길에 간단히 백준 온라인 저지를 한다
파이썬 문제 풀어보기
개요: 9 x 9 행렬의 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치하는 찾는 문제
접근방법: 9 x 9의 빈 행렬을 만들고 반복문으로 한 줄씩 리스트로 받아 행렬에 저장한다. 그리고 중첩 반복문으로 각 요소를 검사하여 최댓값을 찾고 위치를 저장한다.
array = [[0] for _ in range(9)]
for i in range(9):
array[i] = (list(map(int, input().split())))
max_value, p_1, p_2 = 0, 0, 0
for j in range(9):
for k in range(9):
if array[j][k] > max_value:
p_1, p_2 = j, k
max_value = array[j][k]
print(max_value)
print(p_1 + 1, p_2 + 1)
- 작은 값들이라 이중 중첩문으로 풀었지만 배열이 굉장히 길다면 어떻게 해야 할 지 고민해 볼 만하다
개요: 좌표계에 10 x 10 행렬을 여러번 입력해 그 넓이를 구하는 문제
접근방법: 색종이가 붙여지거나 겹쳐지는 부분을 모두 True로 하고 아닌 부분을 False로 하는 불린으로 문제를 풀기로 했다.
array = [[False] * 100 for _ in range(100)]
N = int(input())
for _ in range(N):
x, y = map(int, input().split())
for i in range(x, x + 10):
array[i][y:y+10] = [True] * 10
count = 0
for j in range(100):
count += sum(array[j])
print(count)
- 2차원 배열의 True를 어떻게 셀 것인가를 고민했다.
- 1차원 리스트의 경우 **sum(리스트)를 하면 True값만 count할 수 있었다.