Skip to content

Commit ed590f9

Browse files
committed
2026년 05월 07일 11:31:14
1 parent b037629 commit ed590f9

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# [3248] Black Chain
2+
### 채점 결과
3+
Accepted
4+
### 제출 일자
5+
2026년 05월 07일 11:31:14
6+
### 성능 요약[추후 구현 예정]
7+
- 메모리: N/A KB
8+
- 시간: N/A ms
9+
---
10+
### 문제 링크
11+
https://code.pusan.ac.kr/problem/3248
12+
### 난이도
13+
보통
14+
### 문제 설명
15+
𝑛개의 블랙 고리가 일렬로 연결된 체인이 있다. 블랙 고리 하나는 무게가 정확히 1g 이다. 이 고리들을 이용하여 1g 부터 𝑛g 까지 가능한 모든 무게를 생성하려고 한다. 이를 위해 고리를 일부 풀어야 하는데, 고리를 푸는데 힘이 들어 최소 개의 고리만 풀기를 원한다. 예를 들어 아래의 그림 A.1 처럼 7 개의 고리로 구성된 블랙 체인이 있다고 하자. 이 체인에서 3 번 고리 하나를 풀어 내면 그림 A.2 처럼 3 번 고리 1 개와 두 개의 체인(1~2 번 고리가 연결된 체인과 4~7 번 고리가 연결된 체인)으로 분리된다. 이들을 이용하면 그림 A.3 처럼 1g 부터 7g 까지의 모든 무게를 생성할 수 있다.𝑛개의 고리가 연결된 체인이 주어져 있을 때, 1g 부터 𝑛g 까지 가능한 모든 무게를 생성하기 위해 풀어야 할 고리의 최소 개수를 구하는 프로그램을 작성하시오.
16+
### 입력
17+
입력은 표준입력을 사용한다. 첫 번째 줄에 블랙 고리의 개수를 나타내는 양의 정수 𝑛 (3 ≤ 𝑛 ≤1018)이 주어진다.
18+
### 출력
19+
출력은 표준출력을 사용한다. 1g 부터 𝑛g 까지 가능한 모든 무게를 생성하기 위해 풀어야 할 고리의 최소 개수를 출력한다.
20+
### 예제 입력/출력
21+
**예제 입력 1**
22+
```
23+
7
24+
```
25+
**예제 출력 1**
26+
```
27+
1
28+
```
29+
**예제 입력 2**
30+
```
31+
20
32+
```
33+
**예제 출력 2**
34+
```
35+
2
36+
```
37+
### 제약 사항
38+
- 시간 제한 1000ms
39+
- 메모리 제한 256mb
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
= int(input())
2+
k = 1
3+
while True:
4+
max_n = (k + 1) * (1 << (k + 1)) - 1
5+
6+
if max_n >= :
7+
print(k)
8+
break
9+
k += 1

0 commit comments

Comments
 (0)