Skip to content

Commit 4efeca3

Browse files
committed
[level 2] Title: 숫자 블록, Time: 88.18 ms, Memory: 51.2 MB -BaekjoonHub
1 parent 49298fc commit 4efeca3

2 files changed

Lines changed: 100 additions & 0 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# [level 2] 숫자 블록 - 12923
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/12923)
4+
5+
### 성능 요약
6+
7+
메모리: 51.2 MB, 시간: 88.18 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 연습문제
12+
13+
### 채점결과
14+
15+
정확성: 71.4<br/>효율성: 28.6<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2026년 06월 10일 12:29:16
20+
21+
### 문제 설명
22+
23+
<p>그렙시에는 숫자 0이 적힌 블록들이 설치된 도로에 다른 숫자가 적힌 블록들을 설치하기로 하였습니다. 숫자 블록을 설치하는 규칙은 다음과 같습니다.</p>
24+
25+
<p>블록에 적힌 번호가 n 일 때, 가장 첫 블록은 n * 2번째 위치에 설치합니다. 그 다음은 n * 3, 그 다음은 n * 4, ...위치에 설치합니다. 기존에 설치된 블록은 빼고 새로운 블록을 집어넣습니다.</p>
26+
27+
<p>블록은 1이 적힌 블록부터 숫자를 1씩 증가시키며 순서대로 설치합니다. 예를 들어 1이 적힌 블록은 2, 3, 4, 5, ... 인 위치에 우선 설치합니다. 그 다음 2가 적힌 블록은 4, 6, 8, 10, ... 인 위치에 설치하고, 3이 적힌 블록은 6, 9, 12... 인 위치에 설치합니다.</p>
28+
29+
<p>이렇게 3이 적힌 블록까지 설치하고 나면 첫 10개의 블록에 적힌 번호는 [0, 1, 1, 2, 1, 3, 1, 2, 3, 2]가 됩니다.</p>
30+
31+
<p>그렙시는 길이가 1,000,000,000인 도로에 1부터 10,000,000까지의 숫자가 적힌 블록들을 이용해 위의 규칙대로 모두 설치 했습니다.</p>
32+
33+
<p>그렙시의 시장님은 특정 구간에 어떤 블록이 깔려 있는지 알고 싶습니다.</p>
34+
35+
<p>구간을 나타내는 두 정수 <code>begin</code>, <code>end</code> 가 매개변수로 주어 질 때, 그 구간에 깔려 있는 블록의 숫자 배열을 return하는 solution 함수를 완성해 주세요.</p>
36+
37+
<hr>
38+
39+
<h5>제한 사항</h5>
40+
41+
<ul>
42+
<li>1 ≤ <code>begin</code> ≤ <code>end</code> ≤ 1,000,000,000</li>
43+
<li><code>end</code> - <code>begin</code> ≤ 5,000</li>
44+
</ul>
45+
46+
<hr>
47+
48+
<h5>입출력 예</h5>
49+
<table class="table">
50+
<thead><tr>
51+
<th>begin</th>
52+
<th>end</th>
53+
<th>result</th>
54+
</tr>
55+
</thead>
56+
<tbody><tr>
57+
<td>1</td>
58+
<td>10</td>
59+
<td>[0, 1, 1, 2, 1, 3, 1, 4, 3, 5]</td>
60+
</tr>
61+
</tbody>
62+
</table>
63+
<hr>
64+
65+
<h5>입출력 예 설명</h5>
66+
67+
<p>입출력 예 #1<br>
68+
다음과 같이 블럭이 깔리게 됩니다.<br>
69+
<img src="https://i.imgur.com/OnAE846.png?1" title="" alt="Imgur"></p>
70+
71+
<p>※ 공지 - 2019년 4월 07일 테스트케이스가 변경되었습니다.<br>
72+
※ 공지 - 2023년 2월 09일 지문과 테스트 케이스가 수정되었습니다. 기존에 통과되었던 코드가 통과되지 않을 수 있습니다.</p>
73+
74+
75+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
function getBlockNumber(num) {
2+
if (num === 1) return 0;
3+
let maxDivisor = 1;
4+
5+
for (let i = 2; i <= Math.sqrt(num); i++) {
6+
//효율을 위해 X의 제곱근까지
7+
if (num % i === 0) {
8+
if (num / i <= 10000000) {
9+
return num / i;
10+
}
11+
maxDivisor = i;
12+
}
13+
}
14+
return maxDivisor;
15+
}
16+
17+
function solution(begin, end) {
18+
const result = [];
19+
20+
for (let i = begin; i <= end; i++) {
21+
result.push(getBlockNumber(i));
22+
}
23+
24+
return result;
25+
}

0 commit comments

Comments
 (0)