문제 4054 · 바이트 II
헬스장 점검망의 대표 구역
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 헬스장은 운동 기구의 상태를 확인하기 위해 내부 네트워크에서 접속 기록을 수집한다. 네트워크 담당자는 점검 대상 포트를 사용하는 접속 지점이 가장 많이 나타난 서브넷을 먼저 확인하려고 한다. 각 기록에는 IPv4 주소 하나와 포트 번호 하나가 들어 있다. 같은 접속 지점을 여러 번 관측할 수 있으므로 기록의 개수 자체를 접속 지점의 개수로 사용해서는 안 된다. 이번 점검에서는 모든 주소에 동일한 접두사 길이 P를 적용한다. IPv4 주소 a.b.c.d를 정수 X = a×256³ + b×256² + c×256 + d로 바꾸고, S = 2^(32-P)라고 하자. 이 주소가 속한 서브넷의 네트워크 주소를 나타내는 정수는 floor(X/S)×S이다. 여기서 floor는 소수 부분을 버리는 연산이다. 네트워크 주소를 다시 네 개의 옥텟으로 나타내면 해당 서브넷을 식별할 수 있다. 별도의 사용 가능 호스트 판정은 하지 않으며, 네트워크 주소와 같은 주소나 서브넷의 마지막 주소도 일반 주소와 동일하게 처리한다. 점검 대상 포트 범위는 L 이상 R 이하이다. 이 범위를 벗어난 기록은 완전히 제외한다. 남은 기록에서는 IPv4 주소와 포트 번호가 모두 같을 때만 같은 접속 지점으로 취급한다. 주소가 같아도 포트가 다르면 서로 다른 접속 지점이다. 각 접속 지점은 그 주소가 속한 서브넷의 개수에 한 번만 기여한다. 서로 다른 점검 대상 접속 지점이 가장 많은 서브넷의 네트워크 주소와 그 개수를 구한다. 개수가 같은 서브넷이 여러 개라면 네트워크 주소를 정수로 바꾼 값이 가장 작은 것을 선택한다. 문자열의 사전순으로 비교하지 않는다. 점검 대상 포트 범위에 들어오는 기록이 하나도 없다면 NONE을 출력한다.
입력
첫째 줄에 정수 N, P, L, R이 주어진다. 1 ≤ N ≤ 16,000, 16 ≤ P ≤ 30, 1 ≤ L ≤ R ≤ 65,535이다. 다음 N개 줄에는 IPv4 주소와 정수 포트 번호가 공백으로 구분되어 주어진다. 주소는 a.b.c.d 형식이며 각 옥텟은 0 이상 255 이하의 정수이다. 옥텟은 값이 0일 때를 제외하면 선행 0 없이 표기된다. 포트 번호는 1 이상 65,535 이하이다.
출력
점검 대상 기록이 없으면 NONE을 출력한다. 그렇지 않으면 선택한 서브넷의 네트워크 주소와 서로 다른 접속 지점의 개수를 공백으로 구분하여 한 줄에 출력한다. 네트워크 주소는 각 옥텟에 불필요한 선행 0이 없는 a.b.c.d 형식으로 출력한다.
예제 입력 1
7 24 8000 8100 10.4.2.7 8000 10.4.2.7 8000 10.4.2.7 8001 10.4.3.8 8000 10.4.3.9 8100 10.4.3.10 9000 10.4.2.8 7999
예제 출력 1
10.4.2.0 2
예제 입력 2
4 30 443 443 192.168.1.4 443 192.168.1.7 443 192.168.1.8 443 192.168.1.7 444
예제 출력 2
192.168.1.4 2
예제 입력 3
2 16 1000 2000 172.20.8.1 999 172.20.8.2 2001
예제 출력 3
NONE
힌트 펼치기
- 범위 밖의 포트를 먼저 제외하고, 주소와 포트의 쌍을 중복 없이 센다.
- 서브넷 주소를 정수로 유지하면 동점 비교가 간단하다.
알고리즘 분류
네트워크집합문자열풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |