์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด(1337๋ฒ)
Silver 4
#๊ตฌํ #์ ๋ ฌ #ํฌ ํฌ์ธํฐ
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
๋ฌธ์ ์์ ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ ๋ฆฌ์คํธ์ ์์ 5๊ฐ๊ฐ ์ฐ์์ ์ธ ๊ฐ์ ๊ฐ์ง๋ ๋ฆฌ์คํธ๋ฅผ ๋ปํ๋ค.
์ ๋ ฌ๋์ง ์์ ๋ฆฌ์คํธ๊ฐ ์ฃผ์ด์ง ๋, ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ๊ณ ๋์ ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ ๋ง๋ค๊ธฐ ์ํด์๋ ๋ช ๊ฐ์ ์์๋ฅผ ์ถ๊ฐํด์ผ ํ๋์ง ์ต์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ๋ ฅ ์์ 1์ ์๋ก ๋ค์ด ๋ณด๋ฉด
3
5
6
7
๋ฆฌ์คํธ 5, 6, 7์ด ์์๋ก ์กด์ฌํ๋๋ฐ, 5, 6, 7์ ์ด๋ฏธ ์ฐ์๋ ์์ด๊ธฐ ๋๋ฌธ์ 2๊ฐ๋ง ์์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ ๋ง๋ค ์ ์๋ค.
3, 4 ๋๋ 7, 8์ด ์์ผ๋ฉด ๋๋ค.
๋ฆฌ์คํธ์ ์์ ํ๋ํ๋๋ฅผ ์ฐ์๋ ์์์ ์ฒซ ์์๋ผ๊ณ ๊ฐ์ ํ๊ณ ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ ๋ง๋ค๊ธฐ ์ํด ์ถ๊ฐํด์ผ ํ ์์์ ๊ฐ์๋ ์ต์ 0๊ฐ์์ ์ต๋ 4๊ฐ๊ฐ ๋๋ค.
์ด๋ฏธ ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ์๋ 0๊ฐ์ผ ๊ฒ์ด๊ณ , ์ฐ์๋๋ ์์๋ค์ด ํ๋๋ ์์ ๊ฒฝ์ฐ 4๊ฐ๊ฐ ๋๋ค.
์ ๋ ฅ ์์ 1์ ์๋ก ๋ค์ด ๋ณด๋ฉด 5์ ๊ฒฝ์ฐ์๋ ์ฐ์๋๋ ์ 6, 7์ด ์๊ธฐ ๋๋ฌธ์ 2๊ฐ๋ง ์์ผ๋ฉด ๋๋ค.
6์ ๊ฒฝ์ฐ๋ 7์ด ์๊ณ ์ถ๊ฐ๊ณ 8, 9, 10์ด ์์ด์ผ ํด์ 3๊ฐ๊ฐ ํ์ํ๊ณ , 7์ 4๊ฐ๊ฐ ํ์ํ ๊ฒ์ด๋ค.
์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ ๋ต์ ๊ตฌํด ๋๊ฐ๋ฉด ๋๋ค. ์ ๋ ฅ๋ฐ๋ ๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ 50์ ๋์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ๋ค.
์ ๋ ฅ๋ฐ์ ๋ฐฐ์ด์ ํ ๋ฒ ์ ๋ ฌํด ์ฃผ๊ณ ๋์ ๋ฐ๋ณต์ ๋๋ ค์ผ ํ๋ค. ๊ทธ๋์ผ ์ฐ์๋ ์์ ๊ฐ์๋ฅผ ์ธ๊ธฐ ํธํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ธฐ์ค์ด ๋๋ ๋ฆฌ์คํธ์ ์์๋ฅผ start๋ก ์ผ๊ณ ๋ฐ๋ณต์ ๋๋ฆฌ๊ณ , ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ์์ ๊ฐ์๋ฅผ needCnt๋ก ์ ์ํ๊ณ ํ์ํ index๋ฅผ end๋ก ์ค์ ํ๋ค.
for (start in 0 until list.size - 1) {
var needCnt = 0
var end = start + 1
. . .
}
์ด์ ๊ธฐ์ค์ start๋ก ์ก์์ผ๋, 5๋ฒ ๋ฐ๋ณตํด์ start์ ์์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ ๊ตฌ์ฑํด ๋ณด์.
์ด๋ฏธ ๋ฆฌ์คํธ๋ ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฐ์๋์ง ์์๋ ๊ฐ์ฅ ์์ ๊ฐ๋ถํฐ ์ค๊ฒ ๋๋ค.
<์กฐ๊ฑด 1>
์ฐ์ end๋ฅผ ๊ณ์ ์ด๋์ํค๋ฉด์ ํ์ํด์ผ ํ๋ค.
๊ทธ๋ฐ๋ฐ end๊ฐ list์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์๋ ์๋ค. ์ ๋ ฅ ์์ 1์์ 6์ ๊ธฐ์ค์ผ๋ก ๋์์ผ ํ ๋, ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ 6, 7, 8, 9, 10์ด ๋์ด์ผ ํ๋๋ฐ 8๋ถํฐ๋ list์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฒ ๋๋ค.
์ฆ, ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ ๋ง๋ค๊ธฐ ์ํด ๋ฌด์กฐ๊ฑด ํ์ํด์ง๋ ์์๊ฐ ๋๋ค.
if (end in 0 until list.size) {
. . .
} else {
// ๋ฆฌ์คํธ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋จ. ๊ทธ๋์ ์๊ฐ ๋ ์์ด์ผ ํจ.
needCnt++
}
else๋ก ๋น ์ง๊ฒ ๋๋ฉด list์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์์น์ด๊ธฐ ๋๋ฌธ์ ๋ฌด์กฐ๊ฑด ๊ฐ์ด ์ถ๊ฐ๋์ด์ผ ํ๋ค.
๋ง์ฝ if๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์ด์ list๊ฐ์์ ์ฐ์๋ ๊ฐ์ ์ฐพ์์ค์ผ ํ๋ค. ์กฐ๊ฑด 2๋ก ๋ค์ด๊ฐ๋ค.
<์กฐ๊ฑด 2>
์กฐ๊ฑด 1์ if๋ก ๋ค์ด์ค๊ฒ ๋๋ฉด, list๋ฅผ ํ์ํ๋ฉด์ ์ฐ์๋ ๊ฐ์ ์ฐพ์์ผ ํ๋ค.
์ฐ์๋ ์๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ start๋ฒ์งธ ์์์ ์ํ ํ์๋งํผ ๋ํด ์ฃผ๋ฉด ํ์ํ ๊ฐ์ ๊ตฌํ ์ ์๊ฒ ๋๋ค. ์ด ๊ฐ์ด ๋ฆฌ์คํธ์ ํฌํจ๋์ด ์์ผ๋ฉด end๋ฅผ ํ ์นธ์ฉ ๋ค๋ก ๋ฐ์ด์ฃผ๊ณ , ์๋๋ฉด ํ์ํ ์์์ด๊ธฐ ๋๋ฌธ์ needCnt๋ฅผ ๋๋ ค ์ค์ผ ํ๋ค.
if (list[end] != list[start] + move) needCnt++
else end++
์กฐ๊ฑด์ ๋ง์กฑํ๊ฒ ๋๋ค๋ฉด ํ์ํ ์ซ์๊ฐ ์๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ needCnt๋ฅผ ๋๋ ค ์ฃผ๊ณ , ๋ง์กฑํ์ง ๋ชปํ๋ฉด ํ์ํ ์ซ์๊ฐ ์๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ ๋ค์ list ์์๋ฅผ ํ์ธํ๋ฉด ๋๋ค.
๋ฌธ์ ์ ์ ๋ ฅ ์์ 2๋ฅผ ์์๋ก ๋ค์ด ๋ณด๊ฒ ๋ค.
6
5
7
9
8492
8493
192398
์ด ์์ ์ ์ ๋ต์ 2์ด๋ค. 2์ธ ์ด์ ๋ 5, 7, 9์์ 6๊ณผ 8์ ์ถ๊ฐํด ์ฃผ๋ฉด ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
5๋ฅผ start๋ก ์ก๊ณ ์ํ๋ฅผ ๋๋ฉด, 5๋ ์กฐ๊ฑด 2์ else๋ฅผ ๋ง์กฑํ๊ฒ ๋ผ์ end๋ฅผ ๋๋ ค ์ค๋ค. ์ด์ ๋ค์ ๊ฐ์ 6์ผ ๋๋ ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ needCnt๋ฅผ ๋๋ฆฐ๋ค. ์ด๋ฅผ ๋ฐ๋ณตํด ์ฃผ๋ฉด if์๋ 6, 8์ผ ๋ ๋ค์ด์์ needCnt๋ฅผ ๋๋ฆฌ๊ณ ๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ else๋ก ๋ค์ด๊ฐ ๋ค์ ์์๋ฅผ ํ์ํ ์ ์๊ฒ ํด ์ค๋ค.
๋ฌธ์ ํด๊ฒฐ ์ฝ๋
import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.min
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val size = readLine().toInt()
val list = mutableListOf<Int>()
for (i in 0 until size) {
list.add(readLine().toInt())
}
list.sort()
var consecutiveNumberCnt = 4
for (start in 0 until list.size - 1) {
var needCnt = 0
var end = start + 1
for (move in 1 until 5) {
if (end in 0 until list.size) {
if (list[end] != list[start] + move) needCnt++
else end++
} else {
// ๋ฆฌ์คํธ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋จ. ๊ทธ๋์ ์๊ฐ ๋ ์์ด์ผ ํจ.
needCnt++
}
}
consecutiveNumberCnt = min(consecutiveNumberCnt, needCnt)
}
println(consecutiveNumberCnt)
}
๋ฌธ์ ํ์ด
์ ๋ ฅ๋ฐ์ list๋ฅผ ์ ๋ ฌํด ์ฃผ๊ณ ์กฐ๊ฑด 1๊ณผ ์กฐ๊ฑด 2๋ฅผ ์ํํด ์ต์์ ์ถ๊ฐ๋์ด์ผ ํ ์์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
์์๋ฅผ ๊ตฌํ๊ณ ๋๋ฉด consecutiveNumberCnt์ ์๋ก ๊ฐ์ ๋น๊ตํด ๋ ์์ ๊ฐ์ ์ ์ฉํ๋ฉด ๋๋ค.
consecutiveNumberCnt๋ ์ด๊ธฐ๊ฐ์ด ์ถ๊ฐ๋์ด์ผ ํ ์ต๋๊ฐ์ธ 4๊ฐ ๋ค์ด ์๋ค.
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
๋ฆฌ์คํธ์ ์์๋ฅผ ํ๊น์ผ๋ก ๋ง๋ค์ด์ผ ํ ์ฌ๋ฐ๋ฅธ ๋ฐฐ์ด์ ๋ํ๋ด๊ณ , ๊ฐ์ด ์๋ ์์๊ฐ ๋ช ๊ฐ์ธ์ง ๊ตฌํ๋ ์์ด๋์ด ์์ฒด๋ ๊ธ๋ฐฉ ๋ ์ฌ๋ ธ๋ค.
๊ทผ๋ฐ ๊ตฌํ์ด ์ข ๊ท์ฐฎ์๋ค. ๊ตฌํ ๋์ด๋๋ ๋ฑ Silver 4์ ๋ง๋ ๋ฌธ์ ์ธ ๋ฏํ๋ค.
๋ฆฌ์คํธ์์ start์ end๋ฅผ ๋์์ ์ฌ์ฉํ๋ ํฌ ํฌ์ธํฐ ๋ฌธ์ ์ด๋ค. ํฌ ํฌ์ธํฐ๋ก ๊ตฌํํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.
'๐ฏ | ๋ฐฑ์ค > ๐ | Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, S5] ๋ฐฑ์ค 2828๋ฒ ์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์ (0) | 2024.09.06 |
---|---|
[Kotlin, S3] ๋ฐฑ์ค 8911๋ฒ ๊ฑฐ๋ถ์ด (0) | 2024.08.30 |
[Kotlin, S3] ๋ฐฑ์ค 13305๋ฒ ์ฃผ์ ์ (0) | 2024.08.27 |
[Kotlin, S2] ๋ฐฑ์ค 1912๋ฒ ์ฐ์ํฉ (0) | 2024.08.26 |
[Kotlin, S2] ๋ฐฑ์ค 2716๋ฒ ์์ญ์ด ๋งค๋ฌ๊ธฐ (0) | 2024.08.25 |