[Python] 백준 2669번 쉽게 풀이

김페페·2022년 8월 4일
2

백준

목록 보기
1/2

문제 링크: https://www.acmicpc.net/problem/2669



코드

# 100 x 100 매트릭스 생성 (문제에서 주어진 정수 범위)
matrix = [[0] * 100 for _ in range(100 + 1)]

cnt = 0

for i in range(4):
    i, j, x, y = map(int, input().split())
    
    # range(i, x+1)이 아닌 이유: 점 좌표가 아니라 박스 좌표를 구해야 해서
    for a in range(i, x): 
        for b in range(j, y):
            if matrix[a][b] == 0:
                matrix[a][b] += 1
                cnt += 1

print(cnt)



풀이

1. 점 좌표가 아닌, 박스 좌표라고 생각하기

input() 값으로 좌표 평면의 점 좌표가 주어지지만, (0,0)부터 (1,1)까지 크기 1짜리 박스 좌표라고 생각하면 쉽다.


2. 1번을 고려하여 범위 정하기

for i in range(4):
    i, j, x, y = map(int, input().split())
    for a in range(i, x): # range(i, x+1)이 아닌 이유: 좌표가 아니라 박스를 구해야 해서
        for b in range(j, y):

박스는 점보다 input() 값이 1개 더 필요함
a, b가 주어지면, range(a, b+1) 범위가 아닌, range(a, b +1 -1)
즉 range(a, b) 범위를 순회


3. 주어진 범위를 순회하며, 각 위치에 += 1

for i in range(4):
    i, j, x, y = map(int, input().split())
    for a in range(i, x): # range(i, x+1)이 아닌 이유: 좌표가 아니라 박스를 구해야 해서
        for b in range(j, y):
            if matrix[a][b] == 0:
                matrix[a][b] += 1
                cnt += 1
print(cnt) # 정답

cnt = 표시된 좌표의 수 = 색칠된 박스의 넓이




끝.

profile
독학 머신

2개의 댓글

comment-user-thumbnail
2022년 8월 4일

코드 주석 더 달아주세요!

1개의 답글