Skip to content

Commit 6200c4f

Browse files
committed
[Gold V] Title: 전생했더니 슬라임 연구자였던 건에 대하여 (Easy), Time: 8 ms, Memory: 79508 KB -BaekjoonHub
1 parent 4db8798 commit 6200c4f

2 files changed

Lines changed: 60 additions & 0 deletions

File tree

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# [Gold V] 전생했더니 슬라임 연구자였던 건에 대하여 (Easy) - 14715
2+
3+
[문제 링크](https://www.acmicpc.net/problem/14715)
4+
5+
### 성능 요약
6+
7+
메모리: 79508 KB, 시간: 8 ms
8+
9+
### 분류
10+
11+
수학, 정수론
12+
13+
### 제출 일자
14+
15+
2025년 5월 18일 23:42:02
16+
17+
### 문제 설명
18+
19+
<p>안녕? 내 이름은 ntopia!</p>
20+
21+
<p>나는 원래 지구에 살고 있던 평범한 20대 청년이었어. 어느 날 길을 걷다가 괴한의 칼에 찔려 죽어버렸어. 그런데 이게 무슨 일이람! 정신을 차려보니 이세계에 떨어져 버렸지 뭐야. 여기에서 나는 슬라임을 전문으로 연구하는 슬라임 연구자가 되어버린 것 같아. 나는 지금 아주 중요한 연구를 진행하고 있어. 이 연구가 성공하면 나는 내가 살던 세계로 돌아갈 수 있게 될 거야. 이 연구를 도와주지 않겠니?</p>
22+
23+
<p>이곳의 슬라임은 모두 슬라임 에너지라는 것을 갖고 있고 그 양은 2 이상의 자연수로 표현돼. 나는 슬라임을 분할했을 때 슬라임 에너지가 어떻게 변화하는지에 대해 연구하고 있어.</p>
24+
25+
<p>슬라임 분할 과정은 1마리를 분할해서 2마리를 만들어내는 식으로 이루어져. K만큼의 슬라임 에너지를 가진 슬라임이 있었다고 해보자. 이 슬라임을 적절히 분할하면 A만큼의 에너지를 갖는 슬라임과 B만큼의 에너지를 갖는 슬라임을 만들 수 있고 (A, B는 2 이상의 자연수), 항상 K = A × B 를 만족해. 이렇게 분할하다보면 언젠가는 분할이 되지 않는 슬라임도 생기겠지?</p>
26+
27+
<p>그리고 슬라임 분할 기술이 아직 완벽하지 않아서 슬라임을 분할할 때마다 흠집이 하나씩 생기게 돼. 구체적으로, 흠집이 T개인 슬라임을 분할하면 흠집이 T + 1개인 슬라임 2마리가 생기는 것이지.</p>
28+
29+
<p style="text-align:center"><img alt="" src="https://onlinejudgeimages.s3-ap-northeast-1.amazonaws.com/problem/14715/1.png" style="height:337px; width:472px"></p>
30+
31+
<p style="text-align:center"> 에너지가 24이고 흠집이 1개인 슬라임을 분할한 모습. 에너지가 4이고 흠집이 2개인 슬라임과 에너지가 6이고 흠집이 2개인 슬라임으로 분할되었다.</p>
32+
33+
<p>나에겐 지금 슬라임 에너지가 K이고 흠집이 하나도 없는 슬라임이 있어. 이 슬라임을 분할하고 또 분할해서 분할이 가능한 슬라임이 존재하지 않을 때까지 마구마구 분할해야해. 그렇게 다 분할하고나면 마지막에 남은 슬라임들에 흠집이 적당히 생겼겠지? (물론 생기지 않았을 수도 있어) 그 슬라임들 중에서 흠집이 제일 많이 생긴 녀석의 흠집 개수가 최소가 되도록 분할을 적절히 수행하는 것이 내 연구의 목표야.</p>
34+
35+
<p>내 연구를 도와줘! 부탁이야!!</p>
36+
37+
### 입력
38+
39+
<p>첫 번째 줄에 처음 주어진 슬라임의 에너지 K (2 ≤ K ≤ 1, 000, 000) 가 주어진다.</p>
40+
41+
### 출력
42+
43+
<p>슬라임을 끝까지 분할했을 때, 가장 많이 생긴 흠집의 개수의 최솟값을 출력한다.</p>
44+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import Foundation
2+
3+
4+
var k = Int(readLine()!)!
5+
var lastSlimeCount = 0
6+
var divider = 2
7+
while k != 1 {
8+
while k % divider == 0 {
9+
lastSlimeCount += 1
10+
k /= divider
11+
}
12+
divider += 1
13+
}
14+
let answer = Int(log2(Double(lastSlimeCount)).rounded(.up))
15+
16+
print(answer)

0 commit comments

Comments
 (0)