일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- FOREIGN KEY
- 2557
- 파이썬
- Codeforces
- timestamp
- itertools
- 네이밍
- 소수
- Dictionary
- 딕셔너리
- mysql
- lower_case_table_names
- floor
- list comprehension
- datetime
- BOJ
- 리스트 컴프리헨션
- enumerate
- project euler
- 외래키
- 세그먼트 트리
- ceil
- 자료구조
- 에라토스테네스의 체
- SUM
- 큰 수 나누기
- flask
- python
- SUM()
- convention
Archives
- Today
- Total
늒네 기록
[BOJ-JS] 9849번 - Rect 본문
좌표 평면의 축에 평행한 변을 가진 직사각형이 여럿 주어졌을때, 이 직사각형들의 공통 영역의 넓이를 구하는 문제.
아이디어는 다음과 같다.
- 직사각형이 2개 있다면 두 직사각형의 공통 영역을 구하면 된다.
- 3개 있다면 첫 2개의 공통 영역도 직사각형이므로, 이 직사각형과 세 번째 직사각형의 공통 영역을 구하면 된다.
- 4개 있다면 첫 3개의 공통 영역이 직사각형이므로, ...
- 그러니까, n개의 직사각형이 있으면 앞에 있는 직사각형부터 시작해서 공통영역을 계속 찾아나가면 된다.
그렇다면 공통 영역은 어떻게 찾을까?
- 공통 영역의 x좌표 중 작은 값은 첫 번째 직사각형의 최소 x좌표와 두 번째 직사각형의 최소 x좌표 중 큰 값이다.
- 공통 영역의 x좌표 중 큰 값은 첫 번째 직사각형의 최대 x좌표와 두 번째 직사각형의 최대 x좌표 중 작은 값이다.
- y좌표도 비슷한 논리.
- 이때 공통 영역의 x좌표 중 작은 값을 구한 것이 큰 값을 구한 것보다 커질 수가 있다. 이 경우 유효하지 않은 직사각형이 생기므로, 공통 영역이 없다고 볼 수 있다. y값도 마찬가지!
[,...k]=(0+require('fs').readFileSync(0)).split`
`
q=e=0
w=r=1e4
k.map(i=>{
[a,s,d,f]=i.split` `.map(j=>+j)
if(s){q=q>a?q:a;w=w<s?w:s;e=e>d?e:d;r=r<f?r:f}
})
console.log((w-q)*(r-e)*+(w>q)*+(r>e))
반응형
'알골 공부 기록 > BOJ' 카테고리의 다른 글
[BOJ-JS] 10451번 - 순열 사이클 (0) | 2024.05.17 |
---|---|
[BOJ-JS] 4363번 - Snow Clearing (0) | 2024.05.17 |
[BOJ-JS] 5991번 - Papaya Jungle (0) | 2024.05.08 |
[BOJ-JS] 17848번 - Flight Turbulence (0) | 2024.05.08 |
[BOJ-JS] 12852번 - 1로 만들기 2 (0) | 2024.05.05 |
Comments