์ ์ธ ์ถ ๋ง๋ค๊ธฐ(2205๋ฒ)
Silver 1
#์ํ #๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
https://www.acmicpc.net/problem/2205
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
1๋ถํฐ n๊น์ง์ ๋ฌด๊ฒ๋ฅผ ๊ฐ์ง ๋ฉ๊ณผ ์ฃผ์์ ํฉ์ณ์ 2์ ์ ๊ณฑ์์ ๋ฌด๊ฒ๋ฅผ ๊ฐ์ง๋ ์ ์ธ์ถ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
๊ฐ ๋ฌด๊ฒ๋ฅผ ๊ฐ์ง๋ ๋ฉ์ด๋ฆฌ๋ ์ค๋ณตํด์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค.
n์ด 1๋ถํฐ 5๊น์ง ์ด๋ฃจ์ด์ ธ ์์ ๋, n์ด 5์ผ ๋๋ 3์ ๋์ ํด์ 8์ ๋ง๋ค ์ ์๋ค. 4์ผ ๋๋ ์ฃผ์์ ๋ฌด๊ฒ๋ฅผ ์ถ๊ฐํด์ (4, 4) ์กฐํฉ์ผ๋ก 8์ ๋ง๋ค ์ ์๊ณ ์ฃผ์์ด 3์ผ ๋๋ (3, 5)์ ์กฐํฉ์ผ๋ก ์ ์ธ์ถ๋ฅผ ๋ง๋ค ์ ์๋ค.
์ ์๋ ๋ฌด๊ฒ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฃผ์์ด ์ปค์ง๋ฉด ๋ฉ์ด ์์์ง๊ณ , ๋ฉ์ด ์ปค์ง๋ฉด ์ฃผ์์ด ์์์ง๋ ํน์ง์ ์ด์ฉํด ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ ์ฃผ์์ ๋ฌด๊ฒ๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ๋๋ค.
์ ์ธ์ถ์ ๋ฌด๊ฒ๋ ํ์ฌ ๋ฉ์ ๊ฐ์์์ ๋ค์์ผ๋ก ํฐ 2์ ์ ๊ณฑ์๋ก ์ ํด์ค์ผ ํ๋ค.
n = 5์ผ ๋๋ 8, n = 9์ผ ๋๋ 16
์ ์๋ ์ ์ธ์ถ์ ๋ฌด๊ฒ์ n์ ํตํด ์ฃผ์์ ๋ถ์ฌํ ์ ์๋ ๋ฉ์ ๊ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค.
์ ์ธ์ถ์ ๋ฌด๊ฒ๋ฅผ cw๋ผ๊ณ ํ ๋, cw - n์ ํ๊ฒ ๋๋ฉด cw - n๋ถํฐ n๋ฒ์งธ ๋ฉ๊น์ง ์ฃผ์์ ๋ถ์ฌํ ์ ์๋ค.
cw = 16, n = 9์ผ ๋, 7๋ถํฐ 9๊น์ง์ ๋ฉ์ ์ฃผ์์ ๋ถ์ฌํ ์ ์๋ค.
(9, 7), (8, 8), (7, 9)
๊ทธ๋ฌ๋ฉด ๋จ์ ๋ฉ์ ๊ฐ์๋ cw - n - 1์ด ๋๋ค.
๋ฌธ์ ํด๊ฒฐ ์ฝ๋
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() {
val bf = BufferedReader(InputStreamReader(System.`in`))
var n = bf.readLine().toInt()
val weight = Array(n + 1) { 0 }
while (n > 0) {
// ๋ฉ์ ๊ฐ์๋ฅผ ์ด์ฉํด ๋ง๋ค ์ ์๋ ์ ์ธ์ถ์ ๋ฌด๊ฒ ๊ตฌํ๊ธฐ
var cw = 1
while (cw <= n) {
// ํ์ฌ ๋ฉ์ ๊ฐ์๋ณด๋ค ๊ทธ ๋ค์์ผ๋ก ํฐ 2์ ์ ๊ณฑ์๋ฅผ ๊ตฌํ๊ธฐ
cw *= 2
}
// ๋์ด ์์
val start = cw - n // ๋์ด์ ์์ํ index
for (i in start .. n) {
// i๋ฒ์งธ ๋ฉ์ ํด๋นํ๋ ์ฃผ์์ ๋ฌด๊ฒ๋ฅผ ๊ตฌํ๊ธฐ -> ์ค๋ณต๋์ง ์๊ฒ ์ฃผ์์ ๋ฌด๊ฒ๋ฅผ ์ ํ ์ ์์
weight[i] = cw - i
}
// ๋จ์ ๋ฉ์ ๊ฐ์๋ฅผ ์ ์
n = start - 1
}
val answer = StringBuilder()
for (i in 1 until weight.size) {
answer.append("${weight[i]}\n")
}
println(answer)
}
๋ฌธ์ ํ์ด
ํ์ฌ n์ ๋ฐ๋ผ cw๋ฅผ ์ ํด์ค๋ค.
cw๋ n๋ณด๋ค ํฐ 2์ ์ ๊ณฑ์๋ค ์ค ๊ฐ์ฅ ์์ 2์ ์ ๊ณฑ์์ด๋ค.
start๋ก ๋์ด์ ์์ํ ๋ฉ์ ์์ ์ง์ ์ ์ ํ๊ณ n๋ฒ ๋ฉ๊น์ง ์ฃผ์์ ์ ์ํ๋ค.
์ฃผ์์ cw - i๋ก ์ ํ ์ ์๋ค.
๋ง์ง๋ง์ ์ฃผ์์ ๋ฌด๊ฒ๊ฐ ์ ํด์ง์ง ์์ ๋ฉ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
์งํ ํ๋ก์ธ์ค(n = 10)
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
์ ์ธ์ถ์ ๋ฌด๊ฒ์์ ๋ฉ์ ๋ฌด๊ฒ๋ฅผ ๋นผ์ ์ฃผ์์ ํฌ๊ธฐ๋ฅผ ์ ํด ์ค๋ณต์ ์์ ๋ ๊ฒ์ ์์๋ด๋ ๊ฒ์ ์ด๋ ต์ง ์์๋๋ฐ,
์ผ๋ง๋งํผ์ ๋ฉ๋ค์ ์ฃผ์์ ์ฑ์์ผ ํ๋์ง ์์๋ด๋ ๊ฒ์ด ์ด๋ ค์ ๋ค.
์ง์ ๋ต์ ๊ตฌํด๋ณด๋ฉด์ ํํธ๋ฅผ ์ป์ ์ ์์๋ค.
'๐ฏ | ๋ฐฑ์ค > ๐ | Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, S1] ๋ฐฑ์ค 2468๋ฒ ์์ ์์ญ (0) | 2025.01.19 |
---|---|
[Kotlin, S2] ๋ฐฑ์ค 14247๋ฒ ๋๋ฌด ์๋ฅด๊ธฐ (0) | 2025.01.14 |
[Kotlin, S2] ๋ฐฑ์ค 1780๋ฒ ์ข ์ด์ ๊ฐ์ (0) | 2024.12.18 |
[Kotlin, S3] ๋ฐฑ์ค 32186๋ฒ ์ญ์ ๋ด ์ด์ธ๊ณ ์์ด์ ์๋ชป๋๋ค (0) | 2024.12.18 |
[Kotlin, S2] ๋ฐฑ์ค 26007๋ฒ Codepowers (0) | 2024.12.03 |