|
| 1 | +# [level 2] 서버 증설 횟수 - 389479 |
| 2 | + |
| 3 | +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/389479) |
| 4 | + |
| 5 | +### 성능 요약 |
| 6 | + |
| 7 | +메모리: 90.5 MB, 시간: 0.86 ms |
| 8 | + |
| 9 | +### 구분 |
| 10 | + |
| 11 | +코딩테스트 연습 > 2025 프로그래머스 코드챌린지 2차 예선 |
| 12 | + |
| 13 | +### 채점결과 |
| 14 | + |
| 15 | +정확성: 100.0<br/>합계: 100.0 / 100.0 |
| 16 | + |
| 17 | +### 제출 일자 |
| 18 | + |
| 19 | +2025년 10월 17일 19:58:43 |
| 20 | + |
| 21 | +### 문제 설명 |
| 22 | + |
| 23 | +<p>당신은 온라인 게임을 운영하고 있습니다. 같은 시간대에 게임을 이용하는 사람이 <code>m</code>명 늘어날 때마다 서버 1대가 추가로 필요합니다. 어느 시간대의 이용자가 <code>m</code>명 미만이라면, 서버 증설이 필요하지 않습니다. 어느 시간대의 이용자가 <code>n x m</code>명 이상 <code>(n + 1) x m</code>명 미만이라면 최소 <code>n</code>대의 증설된 서버가 운영 중이어야 합니다. 한 번 증설한 서버는 <code>k</code>시간 동안 운영하고 그 이후에는 반납합니다. 예를 들어, <code>k</code> = 5 일 때 10시에 증설한 서버는 10 ~ 15시에만 운영됩니다.</p> |
| 24 | + |
| 25 | +<p>하루 동안 모든 게임 이용자가 게임을 하기 위해 서버를 최소 몇 번 증설해야 하는지 알고 싶습니다. 같은 시간대에 서버를 x대 증설했다면 해당 시간대의 증설 횟수는 x회입니다.</p> |
| 26 | + |
| 27 | +<p>다음은 <code>m</code> = 3, <code>k</code> = 5 일 때의 시간대별 증설된 서버의 수와 증설 횟수 예시입니다.</p> |
| 28 | +<table class="table"> |
| 29 | + <thead><tr> |
| 30 | +<th>시각</th> |
| 31 | +<th>게임 이용자의 수</th> |
| 32 | +<th>증설된 서버의 수</th> |
| 33 | +<th>증설 횟수</th> |
| 34 | +</tr> |
| 35 | +</thead> |
| 36 | + <tbody><tr> |
| 37 | +<td>0 ~ 1</td> |
| 38 | +<td>0</td> |
| 39 | +<td>0</td> |
| 40 | +<td>0</td> |
| 41 | +</tr> |
| 42 | +<tr> |
| 43 | +<td>1 ~ 2</td> |
| 44 | +<td>2</td> |
| 45 | +<td>0</td> |
| 46 | +<td>0</td> |
| 47 | +</tr> |
| 48 | +<tr> |
| 49 | +<td>2 ~ 3</td> |
| 50 | +<td>3</td> |
| 51 | +<td>1</td> |
| 52 | +<td>1</td> |
| 53 | +</tr> |
| 54 | +<tr> |
| 55 | +<td>3 ~ 4</td> |
| 56 | +<td>3</td> |
| 57 | +<td>1</td> |
| 58 | +<td>0</td> |
| 59 | +</tr> |
| 60 | +<tr> |
| 61 | +<td>4 ~ 5</td> |
| 62 | +<td>1</td> |
| 63 | +<td>1</td> |
| 64 | +<td>0</td> |
| 65 | +</tr> |
| 66 | +<tr> |
| 67 | +<td>5 ~ 6</td> |
| 68 | +<td>2</td> |
| 69 | +<td>1</td> |
| 70 | +<td>0</td> |
| 71 | +</tr> |
| 72 | +<tr> |
| 73 | +<td>6 ~ 7</td> |
| 74 | +<td>0</td> |
| 75 | +<td>1</td> |
| 76 | +<td>0</td> |
| 77 | +</tr> |
| 78 | +<tr> |
| 79 | +<td>7 ~ 8</td> |
| 80 | +<td>0</td> |
| 81 | +<td>0</td> |
| 82 | +<td>0</td> |
| 83 | +</tr> |
| 84 | +<tr> |
| 85 | +<td>8 ~ 9</td> |
| 86 | +<td>0</td> |
| 87 | +<td>0</td> |
| 88 | +<td>0</td> |
| 89 | +</tr> |
| 90 | +<tr> |
| 91 | +<td>9 ~ 10</td> |
| 92 | +<td>0</td> |
| 93 | +<td>0</td> |
| 94 | +<td>0</td> |
| 95 | +</tr> |
| 96 | +<tr> |
| 97 | +<td>10 ~ 11</td> |
| 98 | +<td>4</td> |
| 99 | +<td>1</td> |
| 100 | +<td>1</td> |
| 101 | +</tr> |
| 102 | +<tr> |
| 103 | +<td>11 ~ 12</td> |
| 104 | +<td>2</td> |
| 105 | +<td>1</td> |
| 106 | +<td>0</td> |
| 107 | +</tr> |
| 108 | +<tr> |
| 109 | +<td>12 ~ 13</td> |
| 110 | +<td>0</td> |
| 111 | +<td>1</td> |
| 112 | +<td>0</td> |
| 113 | +</tr> |
| 114 | +<tr> |
| 115 | +<td>13 ~ 14</td> |
| 116 | +<td>6</td> |
| 117 | +<td>2</td> |
| 118 | +<td>1</td> |
| 119 | +</tr> |
| 120 | +<tr> |
| 121 | +<td>14 ~ 15</td> |
| 122 | +<td>0</td> |
| 123 | +<td>2</td> |
| 124 | +<td>0</td> |
| 125 | +</tr> |
| 126 | +<tr> |
| 127 | +<td>15 ~ 16</td> |
| 128 | +<td>4</td> |
| 129 | +<td>1</td> |
| 130 | +<td>0</td> |
| 131 | +</tr> |
| 132 | +<tr> |
| 133 | +<td>16 ~ 17</td> |
| 134 | +<td>2</td> |
| 135 | +<td>1</td> |
| 136 | +<td>0</td> |
| 137 | +</tr> |
| 138 | +<tr> |
| 139 | +<td>17 ~ 18</td> |
| 140 | +<td>13</td> |
| 141 | +<td>4</td> |
| 142 | +<td>3</td> |
| 143 | +</tr> |
| 144 | +<tr> |
| 145 | +<td>18 ~ 19</td> |
| 146 | +<td>3</td> |
| 147 | +<td>3</td> |
| 148 | +<td>0</td> |
| 149 | +</tr> |
| 150 | +<tr> |
| 151 | +<td>19 ~ 20</td> |
| 152 | +<td>5</td> |
| 153 | +<td>3</td> |
| 154 | +<td>0</td> |
| 155 | +</tr> |
| 156 | +<tr> |
| 157 | +<td>20 ~ 21</td> |
| 158 | +<td>10</td> |
| 159 | +<td>3</td> |
| 160 | +<td>0</td> |
| 161 | +</tr> |
| 162 | +<tr> |
| 163 | +<td>21 ~ 22</td> |
| 164 | +<td>0</td> |
| 165 | +<td>3</td> |
| 166 | +<td>0</td> |
| 167 | +</tr> |
| 168 | +<tr> |
| 169 | +<td>22 ~ 23</td> |
| 170 | +<td>1</td> |
| 171 | +<td>0</td> |
| 172 | +<td>0</td> |
| 173 | +</tr> |
| 174 | +<tr> |
| 175 | +<td>23 ~ 24</td> |
| 176 | +<td>5</td> |
| 177 | +<td>1</td> |
| 178 | +<td>1</td> |
| 179 | +</tr> |
| 180 | +</tbody> |
| 181 | + </table> |
| 182 | +<p>모든 게임 이용자를 감당하기 위해 최소 7번 서버를 증설해야 하며, 이보다 적은 수의 서버 증설로는 모든 게임 이용자를 감당할 수 없습니다.</p> |
| 183 | + |
| 184 | +<p>0시에서 23시까지의 시간대별 게임 이용자의 수를 나타내는 1차원 정수 배열 <code>players</code>, 서버 한 대로 감당할 수 있는 최대 이용자의 수를 나타내는 정수 <code>m</code>, 서버 한 대가 운영 가능한 시간을 나타내는 정수 <code>k</code>가 주어집니다. 이때, 모든 게임 이용자를 감당하기 위한 최소 서버 증설 횟수를 return 하도록 solution을 완성해 주세요.</p> |
| 185 | + |
| 186 | +<hr> |
| 187 | + |
| 188 | +<h5>제한사항</h5> |
| 189 | + |
| 190 | +<ul> |
| 191 | +<li><code>players</code>의 길이 = 24 |
| 192 | + |
| 193 | +<ul> |
| 194 | +<li>0 ≤ <code>players</code>의 원소 ≤ 1,000</li> |
| 195 | +<li><code>players[i]</code>는 <code>i</code>시 ~ <code>i+1</code>시 사이의 게임 이용자의 수를 나타냅니다.</li> |
| 196 | +</ul></li> |
| 197 | +<li>1 ≤ <code>m</code> ≤ 1,000</li> |
| 198 | +<li>1 ≤ <code>k</code> ≤ 24</li> |
| 199 | +</ul> |
| 200 | + |
| 201 | +<hr> |
| 202 | + |
| 203 | +<h5>테스트 케이스 구성 안내</h5> |
| 204 | + |
| 205 | +<p>아래는 테스트 케이스 구성을 나타냅니다. 각 그룹 내의 테스트 케이스를 모두 통과하면 해당 그룹에 할당된 점수를 획득할 수 있습니다.</p> |
| 206 | +<table class="table"> |
| 207 | + <thead><tr> |
| 208 | +<th>그룹</th> |
| 209 | +<th>총점</th> |
| 210 | +<th>추가 제한 사항</th> |
| 211 | +</tr> |
| 212 | +</thead> |
| 213 | + <tbody><tr> |
| 214 | +<td>#1</td> |
| 215 | +<td>5%</td> |
| 216 | +<td>m = <code>1</code>, k = <code>1</code></td> |
| 217 | +</tr> |
| 218 | +<tr> |
| 219 | +<td>#2</td> |
| 220 | +<td>7%</td> |
| 221 | +<td>k = <code>1</code></td> |
| 222 | +</tr> |
| 223 | +<tr> |
| 224 | +<td>#3</td> |
| 225 | +<td>88%</td> |
| 226 | +<td>추가 제한 사항 없음</td> |
| 227 | +</tr> |
| 228 | +</tbody> |
| 229 | + </table> |
| 230 | +<hr> |
| 231 | + |
| 232 | +<h5>입출력 예</h5> |
| 233 | +<table class="table"> |
| 234 | + <thead><tr> |
| 235 | +<th>players</th> |
| 236 | +<th>m</th> |
| 237 | +<th>k</th> |
| 238 | +<th>result</th> |
| 239 | +</tr> |
| 240 | +</thead> |
| 241 | + <tbody><tr> |
| 242 | +<td>[0, 2, 3, 3, 1, 2, 0, 0, 0, 0, 4, 2, 0, 6, 0, 4, 2, 13, 3, 5, 10, 0, 1, 5]</td> |
| 243 | +<td>3</td> |
| 244 | +<td>5</td> |
| 245 | +<td>7</td> |
| 246 | +</tr> |
| 247 | +<tr> |
| 248 | +<td>[0, 0, 0, 10, 0, 12, 0, 15, 0, 1, 0, 1, 0, 0, 0, 5, 0, 0, 11, 0, 8, 0, 0, 0]</td> |
| 249 | +<td>5</td> |
| 250 | +<td>1</td> |
| 251 | +<td>11</td> |
| 252 | +</tr> |
| 253 | +<tr> |
| 254 | +<td>[0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 5, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1]</td> |
| 255 | +<td>1</td> |
| 256 | +<td>1</td> |
| 257 | +<td>12</td> |
| 258 | +</tr> |
| 259 | +</tbody> |
| 260 | + </table> |
| 261 | +<hr> |
| 262 | + |
| 263 | +<h5>입출력 예 설명</h5> |
| 264 | + |
| 265 | +<p><strong>입출력 예 #1</strong></p> |
| 266 | + |
| 267 | +<ul> |
| 268 | +<li>문제의 예시와 같습니다.</li> |
| 269 | +</ul> |
| 270 | + |
| 271 | +<p><strong>입출력 예 #2</strong></p> |
| 272 | + |
| 273 | +<ul> |
| 274 | +<li>총 11번 서버를 증설해야 합니다. |
| 275 | + |
| 276 | +<ul> |
| 277 | +<li>3 ~ 4시: 2번</li> |
| 278 | +<li>5 ~ 6시: 2번</li> |
| 279 | +<li>7 ~ 8시: 3번</li> |
| 280 | +<li>15 ~ 16시: 1번</li> |
| 281 | +<li>18 ~ 19시: 2번</li> |
| 282 | +<li>20 ~ 21시: 1번</li> |
| 283 | +</ul></li> |
| 284 | +</ul> |
| 285 | + |
| 286 | +<p><strong>입출력 예 #3</strong></p> |
| 287 | + |
| 288 | +<ul> |
| 289 | +<li>총 12번 서버를 증설해야 합니다. |
| 290 | + |
| 291 | +<ul> |
| 292 | +<li>5 ~ 6시: 2번</li> |
| 293 | +<li>9 ~ 10시: 1번</li> |
| 294 | +<li>11 ~ 12시: 5번</li> |
| 295 | +<li>13 ~ 14시: 2번</li> |
| 296 | +<li>15 ~ 16시: 1번</li> |
| 297 | +<li>23 ~ 24시: 1번</li> |
| 298 | +</ul></li> |
| 299 | +</ul> |
| 300 | + |
| 301 | + |
| 302 | +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges |
0 commit comments