[코딩 공부+] 6일차(2/18)

성철민·2023년 2월 18일
0

배움

목록 보기
6/42
post-thumbnail

울산 내려가는 길에 간단히 백준 온라인 저지를 한다

Schedule1. BAEKJOON

파이썬 문제 풀어보기

단계별로 풀어보기('9단계. 2차원 배열' 도전중)


2566번. 최댓값

개요: 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)
  • 작은 값들이라 이중 중첩문으로 풀었지만 배열이 굉장히 길다면 어떻게 해야 할 지 고민해 볼 만하다

2563번. 색종이

개요: 좌표계에 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할 수 있었다.
profile
developer

0개의 댓글