문제 3675 · 바이트 IV
노선망의 서비스 포트 점검
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
버스 운영망에서는 차량 단말의 통신을 여러 노선망으로 나누어 관리한다. 네트워크 담당자는 수집된 접속 기록을 이용해 점검 대상 서비스 포트가 가장 다양하게 관찰된 노선망을 찾으려고 한다. 기록에는 접속을 시도한 단말의 IPv4 주소와 목적지 포트 번호가 들어 있다. 모든 단말 주소는 10.A.B.C 형식이며, 각 노선망은 /24 서브넷을 사용한다. 이 문제에서 /24는 주소의 앞 세 부분이 같으면 같은 노선망이라는 뜻이다. 따라서 10.4.9.2와 10.4.9.83은 모두 10.4.9.0 노선망에 속한다. 마지막 부분이 다른 단말의 기록도 같은 노선망의 관측 결과로 모은다. 점검할 포트 번호의 닫힌 구간 L부터 R까지가 주어진다. 포트 번호가 이 구간에 포함되는 기록만 사용한다. 각 노선망의 점수는 사용한 기록에서 관찰된 서로 다른 포트 번호의 개수다. 같은 포트가 여러 단말에서 나타나거나 같은 접속 기록이 반복되어도 그 노선망에서는 한 번만 센다. 같은 포트가 서로 다른 노선망에서 나타나면 각 노선망의 점수에 각각 포함한다. 점수가 가장 높은 노선망 하나를 출력한다. 최고 점수가 같은 노선망이 여러 개라면 네트워크 주소를 정수 부분별로 비교하여 더 작은 주소를 고른다. 모든 주소의 첫 부분은 10이고 마지막 부분은 0이므로 A가 작은 쪽을 먼저 고르며, A도 같으면 B가 작은 쪽을 고른다. 문자열의 사전 순서로 비교하지 않는다. 점검 구간에 포함되는 기록이 하나도 없다면 선택할 노선망이 없으므로 NONE을 출력한다. 구간에 포함되는 기록이 있다면 선택한 노선망의 네트워크 주소와 점수를 출력한다. 각 노선망과 버스 노선의 실제 이름을 대응시키는 정보는 필요하지 않으며, 입력된 주소만으로 집계를 수행한다.
입력
첫째 줄에 기록 수 N과 점검 포트 구간의 양 끝 L, R이 공백으로 주어진다. 모두 정수이며 1≤N≤10,000, 1≤L≤R≤65,535이다. 다음 N개 줄에 IPv4 주소와 목적지 포트 P가 공백으로 주어진다. 주소는 10.A.B.C 형식이며 A, B, C는 정수이고 0≤A,B≤255, 1≤C≤254이다. P는 1 이상 65,535 이하의 정수다. 주소의 각 부분과 모든 정수는 불필요한 선행 0 없이 십진수로 주어진다. 동일한 기록이 반복될 수 있다.
출력
점검 구간의 포트가 관찰된 노선망이 있으면, 규칙에 따라 선택한 네트워크 주소와 서로 다른 포트 수를 공백으로 구분하여 한 줄에 출력한다. 네트워크 주소는 10.A.B.0 형식으로 출력하며 각 부분에 불필요한 선행 0을 붙이지 않는다. 점검 구간에 포함되는 기록이 없으면 NONE을 출력한다.
예제 입력 1
7 100 200 10.3.8.1 100 10.3.8.2 100 10.3.8.2 150 10.3.8.9 201 10.3.9.1 100 10.3.9.1 125 10.3.9.2 200
예제 출력 1
10.3.9.0 3
예제 입력 2
4 80 90 10.10.1.3 80 10.2.9.4 90 10.2.10.5 80 10.2.9.8 90
예제 출력 2
10.2.9.0 1
예제 입력 3
2 400 500 10.0.0.1 399 10.255.255.254 501
예제 출력 3
NONE
힌트 펼치기
- 각 노선망에 대해 관찰된 포트 번호를 집합에 저장한다.
- A×256+B를 노선망의 키로 사용하면 주소의 숫자 비교 순서를 보존할 수 있다.
알고리즘 분류
문자열집합해시풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |