https://www.acmicpc.net/problem/10163
🔥 처음 제출 코드 (53점)
N = int(input())
arr = [[0 for _ in range(1001)] for _ in range(1001)]
for n in range(1, N+1):
x, y, w, h = map(int, input().split())
for i in range(x, x+w):
for j in range(y, y+h):
arr[i][j] = n
for i in range(1, N+1):
cnt = 0
for j in range(1001):
cnt += arr[j].count(i)
print(cnt)
⭕ 해설
- 간단하게 모든 원소에 0을 저장한 1001x1001 크기의 2차원 배열을 만들어놨습니다.
- 그 뒤 입력받은 색종이가 차지하는 범위를 모두 덮어씌워 줍니다.
- 마지막 색종이까지 입력받고나서 남아있는 수를 세어주고 차례대로 출력합니다.
🔥 변경 후 제출코드 (100점)
import sys
input = sys.stdin.readline
N = int(input())
arr = [[0 for _ in range(1001)] for _ in range(1001)]
for i in range(1, N+1):
x, y, w, h = map(int, input().split())
for j in range(y, y+h):
arr[j][x:x+w] = [i]*w
for i in range(1, N+1):
cnt = 0
for j in range(1001):
cnt += arr[j].count(i)
print(cnt)
아무리 찾아봐도 53점짜리 코드에서 틀린 부분을 못 찾아서 코드 수정없이 pypy로 돌렸더니 100점이 나왔습니다.
논리 구현이 틀린 것이 아니라 시간초과 때문에 53점을 받게 된 것 같아서
import sys를 넣어주고 색종이를 덮어씌우는 부분을 약간 만져주니 해결이 되었습니다.
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준 BOJ] 13398 연속합 2 (python) (0) | 2022.02.18 |
---|---|
[백준 BOJ] 14696 딱지놀이 (python) (0) | 2022.02.16 |
[백준 BOJ] 9465 스티커 (python) (0) | 2022.02.16 |
[백준 BOJ] 1149 RGB거리 (python) (0) | 2022.02.16 |
[백준 BOJ] 2225 합분해 (python) (0) | 2022.02.15 |