문제 3664 · 비트 IV
재생 버튼의 세 가지 표시
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
음악 스트리밍 앱에서 재생 대기 목록에 담긴 곡마다 재생 버튼의 표시를 정하려고 한다. 앱은 곡 전체를 저장해 둔 경우와 네트워크로 나머지를 받아야 하는 경우를 구분한다. 모든 데이터 크기는 같은 단위로 측정한 정수다. 대기 목록에는 N개의 곡이 있다. 각 곡에는 전체 데이터 크기 L, 기기에 이미 저장된 데이터 크기 D, 와이파이 연결 여부 W, 그리고 해당 곡을 위해 사용할 수 있는 모바일 데이터의 상한 B가 주어진다. D는 0 이상 L 이하이므로, 곡 전체를 준비하기 위해 추가로 받아야 하는 데이터 크기는 L-D다. W가 1이면 와이파이에 연결되어 있고, 0이면 연결되어 있지 않다. 앱은 각 곡에 대해 다음 순서로 버튼 표시를 하나만 정한다. 먼저 D가 L과 같으면 네트워크 상태와 B에 관계없이 ‘저장됨’으로 표시한다. 그렇지 않으면서 와이파이에 연결되어 있으면 ‘바로 재생’으로 표시한다. 와이파이에 연결되어 있지 않아도 추가로 받아야 하는 데이터 크기가 B 이하이면 ‘바로 재생’으로 표시한다. 이때 필요한 크기가 B와 정확히 같아도 바로 재생할 수 있다. 어느 조건에도 해당하지 않으면 ‘연결 대기’로 표시한다. 이 작업은 실제 재생이나 다운로드를 수행하지 않고 현재 상태에서 버튼 표시만 결정한다. 따라서 한 곡의 표시를 정해도 다른 곡의 저장량, 연결 여부, 모바일 데이터 상한은 바뀌지 않는다. B는 여러 곡이 함께 나누어 쓰는 총량이 아니라 각 곡에 따로 적용되는 상한이다. 같은 정보가 주어진 곡이 여러 개 있으면 목록에 등장한 횟수만큼 각각 센다. 대기 목록의 모든 곡을 확인하여 ‘저장됨’, ‘바로 재생’, ‘연결 대기’로 표시되는 곡의 수를 이 순서대로 구한다. 어떤 표시를 받는 곡이 하나도 없으면 그 표시의 곡 수는 0이다.
입력
첫째 줄에 곡의 수 N이 주어진다. 다음 N개의 줄에는 각 곡의 L, D, W, B가 공백으로 구분되어 주어진다. 모든 입력값은 정수이며, 1≤N≤1,000, 1≤L≤1,000, 0≤D≤L, W∈{0,1}, 0≤B≤1,000이다.
출력
‘저장됨’, ‘바로 재생’, ‘연결 대기’로 표시되는 곡의 수를 순서대로 한 줄에 공백으로 구분하여 출력한다.
예제 입력 1
6 80 80 0 0 120 20 1 0 90 35 0 55 90 35 0 54 40 0 0 0 15 15 1 1000
예제 출력 1
2 2 2
예제 입력 2
3 1 0 0 1 1000 0 1 0 700 699 0 1
예제 출력 2
0 3 0
예제 입력 3
1 1 0 0 0
예제 출력 3
0 0 1
힌트 펼치기
- 이미 모두 저장된 곡인지 먼저 확인한다. 나머지 곡은 와이파이 연결 여부와 L-D를 이용해 분류한다.
관련 서재 장
알고리즘 분류
조건 분기구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |