๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ฏ | ๋ฐฑ์ค€/๐Ÿ™‚ | Silver

[Kotlin, S4] ๋ฐฑ์ค€ 1337๋ฒˆ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฐ์—ด

by immgga 2024. 8. 29.

์ถœ์ฒ˜: unsplash.com

 

์˜ฌ๋ฐ”๋ฅธ ๋ฐฐ์—ด(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๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ํˆฌ ํฌ์ธํ„ฐ ๋ฌธ์ œ์ด๋‹ค. ํˆฌ ํฌ์ธํ„ฐ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค.

728x90