본문 바로가기
백준

백준 2563 python

by ris 2024. 9. 10.

 

 이번 문제는 굉장히 쉬움에도 그 방법을 찾지 못하면 정말 복잡해지는 문제이다.

 필자는 30분간 고민하다가 결국 힌트를 보고 나서야 이 방법을 알게 되었다.

 

 처음에는 너무 쉽다고 생각하여 바로 색종이들의 틈을 메운 상태에서의 최대 넓이를 구하고 틈을 빼주는 방식으로 하려 했다. 허나 이 틈을 찾는 과정이 굉장히 복잡해서 여기서만 시간을 다 때운 것 같다.

 

 결국 맞는 풀이는 가장 간단하게 노가다였다.

map_array = [[0]*100 for i in range(100)]

for i in range(int(input())):
    map_idx = [int(i) for i in input().split()]
    map_array[map_idx[1]][map_idx[0]] = 1
    for j in range(1, 100):
        if map_array[map_idx[1] + j // 10][map_idx[0] + j % 10] == 1: continue
        map_array[map_idx[1] + j // 10][map_idx[0] + j % 10] = 1

result = sum(row.count(1) for row in map_array)
print(result)

 

 이번 코드에는 리스트 컴프리헨션(List Comprehension)을 활용하여 풀었다.

 항상 까먹고 다시 활용법을 찾다보니 진절머리가 나 나중에 따로 정리해볼 생각이다.

'백준' 카테고리의 다른 글

[백준] 1193번 분수찾기 | C  (0) 2025.01.06
백준 11005 python 풀이  (0) 2024.09.19
백준 2738 [python/c++] 풀이  (0) 2024.07.21
백준 1316 c++ 풀이  (0) 2024.07.14
백준 2941 c++ 풀이  (0) 2024.07.09