백준_14658
포스트
취소

백준_14658

하늘에서 별똥별이 빗발친다

문제


“오빠! 나 얼마만큼 사랑해?”

“널 위해서라면 저기 저 하늘의 별이라도 따다 줄 수 있어. 지금 따줄까?”

“에이, 거짓말!”

“정말이야. 한 번 봐봐!”

욱제는 하늘을 발로 차버렸다. 그랬더니 정말 별이 떨어졌다. 그런데, 정말로 별이 지구로 떨어지기 시작했다. 욱제는 지구를 지키는 정의의 용사가 되기로 결심했다.

“자기야, 나 세계를 지키고 올게. 꼭 돌아올 테니 조금만 기다려줘.”

지구의 파괴를 막기 위해서는 지표면에 떨어지는 별똥별의 수를 최소화해야 한다. 욱제는 커다란 네모난 L*L 크기의 트램펄린을 준비했다. 별똥별이 어디로 떨어질지는 이미 알고 있기 때문에, 욱제는 이 트램펄린으로 최대한 많은 별똥별을 우주로 튕겨낼 계획이다. 하지만 학교 예산으로 트램펄린을 구매하는 욱제는 이 긴급한 와중에도 예산 심의 통과를 기다리느라 바쁘다!

욱제를 도와 세계를 구하자. 최대한 많은 별똥별을 튕겨내도록 트램펄린을 배치했을 때, 지구에는 몇 개의 별똥별이 부딪히게 될까? (별똥별이 떨어지는 위치는 겹치지 않으며 별똥별은 트램펄린의 모서리에 부딪혀도 튕겨나간다!) 트램펄린은 비스듬하게 배치 할 수 없다.

입력


첫째 줄에 네 정수 N, M, L, K가 주어진다. (1 ≤ N, M ≤ 500,000, 1 ≤ L ≤ 100,000, 1 ≤ K ≤ 100) N은 별똥별이 떨어지는 구역의 가로길이, M은 세로길이, L은 트램펄린의 한 변의 길이, K는 별똥별의 수를 뜻한다. 이후 K개의 줄에 걸쳐 별똥별이 떨어지는 위치의 좌표 (x, y)가 주어진다. (0 ≤ x ≤ N, 0 ≤ y ≤ M)

출력


욱제가 트램펄린으로 최대한 많은 별똥별을 튕겨낼 때, 지구에 부딪히는 별똥별의 개수를 출력한다.

예제 입력 1


1
2
3
4
5
6
7
8
12 10 4 7
2 4
7 3
3 1
5 6
4 7
12 10
8 6

예제 출력 1


1
3

풀이과정


트램펄린의 위치는 정해지지 않았으므로 주어진 별똥별의 좌표를 기준으로 가장 적게 땅에 떨어지는 별똥별을 구하면 된다!

별의 좌표들이 저장된 배열 stars를 처음부터 살펴보면서 별 2개의 좌표를 트램펄린의 오른쪽 위 점과 왼쪽 아래 점으로 설정하고 별이 이 공간에 떨어지면, 즉 트램펄린에 떨어지면 count를 하나씩 올려주었다.

그리고 min 함수를 통해 전체 별의 개수에서 count를 뺀값을 비교하여 가장 땅에 떨어지는 경우의 수를 구하는 문제!!

코드


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

백준_1051

인터렉티브 자바스크립트 - 브라우저와 자바스크립트