백준 2669 직사각형 네개의 합집합의 면적 구하기

pudding·2022년 10월 14일
0

알고리즘.py

목록 보기
4/10

📝문제

💡아이디어
처음에는 어떻게 해야 효율적으로 겹치는 부분을 제외하고 사각형의 넓이를 구할 수 있을지 고민하였다.
-> 좌표가 100이하인 양의 정수이므로 100*100 의 배열에 두고 풀이했다

  • 사각형에 해당하는 인덱스를 모두 1로 바꾼다
  • 그리고 그 합을 구함

👩🏻‍💻풀이코드

#이차원 배열 생성 
rectangle = [[0 for _ in range(101)] for _ in range(101)]

for _ in range(4):
	#왼쪽아래 꼭짓점과 오른쪽위 꼭짓점이므로 좌표끼리 대소비교 안해도됨
	x1, y1, x2, y2 = map(int, input().split())

	for i in range(x1, x2):
		for j in range(y1, y2):
			rectangle[i][j] = 1

sum=0

for i in range(101):
 	for j in range(101):
 		if rectangle[i][j] == 1:
 			sum += 1
            
#answer = 0
#for row in rectangle:
#	answer += sum(row)
#print(answer)

print(sum)

🔍후기

  • 다른 풀이가 있나 구글링하다가 이차원배열 합을 구하는 새로운 풀이를 발견했다 : 마지막 주석 코드
  • 구글링해봐도 정보가 별로 없었다. 이차원 배열을 포문에 돌릴 때 row 변수를 이용하면 한열씩 가져올 수 있다.
profile
영차 영차 개발 공부 기록 하기

0개의 댓글