문제 4723 · 바이트 I
창고 단말기 접속 집계
댓글 0| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms | 측정하지 않음 | 0 | 0 | 0 | 0.00% |
문제
물류 창고의 네트워크 담당자는 작업 단말기가 보낸 접속 기록을 점검하고 있다. 창고에는 이번 점검 대상인 IPv4 서브넷 하나가 지정되어 있으며, 접속을 허용할 포트 번호의 구간도 정해져 있다. 담당자는 기록에 적힌 주소와 포트를 기준으로 유효한 접속 기록의 수와 서로 다른 접속 지점의 수를 집계하려 한다. IPv4 주소 a.b.c.d는 네 정수 a, b, c, d로 표현한다. 이 주소의 정수값은 a×256³+b×256²+c×256+d이다. 점검 대상은 기준 주소 A와 접두사 길이 P로 주어진다. B=2^(32-P)라고 할 때, 네트워크 주소의 정수값 Q는 A의 정수값을 B로 나눈 몫에 B를 곱한 값이다. 대상 서브넷에 속하는 주소의 정수값은 Q 이상 Q+B-1 이하이다. 기준 주소 A 자체가 네트워크 주소일 필요는 없다. 이 창고에서는 네트워크 주소 Q와 마지막 주소 Q+B-1을 단말기에 배정하지 않는다. 따라서 접속 기록의 주소 정수값이 Q보다 크고 Q+B-1보다 작아야 주소 조건을 만족한다. 서브넷 밖의 주소나 두 끝 주소에서 발생한 기록은 집계에서 제외한다. 별도의 특수 주소 규칙은 적용하지 않고, 여기에서 정한 수치 조건만 사용한다. 포트 조건은 허용 구간의 양 끝을 포함한다. 주소 조건과 포트 조건을 모두 만족하는 기록만 유효하다. 같은 주소와 같은 포트가 여러 번 등장하면 유효 기록 수에는 등장한 횟수를 모두 더하지만, 서로 다른 접속 지점 수에는 한 번만 더한다. 주소가 같아도 포트가 다르면 다른 접속 지점이며, 포트가 같아도 주소가 다르면 다른 접속 지점이다. 주어진 기록을 모두 확인한 뒤 유효 기록 수와 서로 다른 유효 접속 지점 수를 출력한다. 유효한 기록이 하나도 없다면 두 수는 모두 0이다.
입력
첫째 줄에 기준 IPv4 주소 A와 정수 P, L, R이 공백으로 구분되어 주어진다. 8≤P≤30, 1≤L≤R≤65,535이다. 둘째 줄에 기록 수 N이 주어진다. 1≤N≤12,000이다. 다음 N개 줄에 IPv4 주소와 포트 번호가 공백으로 구분되어 주어진다. 포트 번호는 0 이상 65,535 이하의 정수이다. 모든 IPv4 주소는 0 이상 255 이하인 정수 네 개를 마침표로 연결한 형식이다. 각 정수에는 값이 0인 경우를 제외하고 앞에 0이 붙지 않는다.
출력
유효 기록 수와 서로 다른 유효 접속 지점 수를 공백으로 구분하여 한 줄에 출력한다. 유효 기록이 없으면 0 0을 출력한다.
예제 입력 1
10.4.2.5 29 8000 8002 7 10.4.2.0 8000 10.4.2.1 8000 10.4.2.1 8000 10.4.2.1 8001 10.4.2.7 8002 10.4.2.6 8003 10.4.2.8 8000
예제 출력 1
3 2
예제 입력 2
192.168.1.10 30 443 443 3 192.168.1.8 443 192.168.1.11 443 192.168.1.9 80
예제 출력 2
0 0
힌트 펼치기
- IPv4 주소를 하나의 정수로 바꾸면 서브넷 포함 여부를 구간 비교로 확인할 수 있다.
알고리즘 분류
구현해시문자열풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
댓글 0
로그인하면 댓글을 쓸 수 있습니다.
댓글 접기·펼치기
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| JavaScript | 브라우저 JavaScript | 1000ms / 테스트 | 측정하지 않음 |
| TypeScript | TypeScript 5.9.3 | 1000ms / 테스트 | 측정하지 않음 |
| Python 3 | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음 |
| C | YoWASP Clang 22 | 2000ms / 테스트 | 측정하지 않음 |
| C++ | YoWASP Clang 22 / libc++ | 2000ms / 테스트 | 측정하지 않음 |
| Java | OpenJDK javac + TeaVM (Java 21 문법) | 3000ms / 테스트 | 측정하지 않음 |
| Lua | Wasmoon 1.16.0 / Lua 5.4 | 3000ms / 테스트 | 측정하지 않음 |
| Ruby | Ruby 3.4 / ruby.wasm 2.10.1 | 5000ms / 테스트 | 측정하지 않음 |
| Scheme | BiwaScheme 0.8.3 | 5000ms / 테스트 | 측정하지 않음 |
| Prolog | SWI-Prolog / swipl-wasm 8.2.5 | 5000ms / 테스트 | 측정하지 않음 |
| Perl | Perl 5.28 / WebPerl 0.09-beta | 5000ms / 테스트 | 측정하지 않음 |