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

[Kotlin, S3] ๋ฐฑ์ค€ 31883๋ฒˆ FA์ˆ˜์˜ ์ง„

by immgga 2024. 8. 9.

์ถœ์ฒ˜: unsplash.com

 

FA์ˆ˜์˜ ์ง„(31883๋ฒˆ)

Silver 3

#์ˆ˜ํ•™ #๊ตฌํ˜„ #๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ #์‹œ๋ฎฌ๋ ˆ์ด์…˜

 

๋ฌธ์ œ ๋‚ด์šฉ

 

 

๋ฌธ์ œ ์ ‘๊ทผ

์ž…๋ ฅ์ด ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.

ํšก๋‹จ๋ณด๋„๋ฅผ ๊ฑด๋„ˆ๋Š” ์‹œ๊ฐ„, ์œก๊ต๋ฅผ ๊ฑด๋„ˆ๋Š” ์‹œ๊ฐ„, ํšก๋‹จ๋ณด๋„๊ฐ€ ์ดˆ๋ก๋ถˆ์ธ ์‹œ๊ฐ„, ํšก๋‹จ๋ณด๋„๊ฐ€ ๋นจ๊ฐ„๋ถˆ์ธ ์‹œ๊ฐ„

์œ„ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅ์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, ํšก๋‹จ๋ณด๋„์™€ ์œก๊ต ์ค‘ ๋” ์‹œ๊ฐ„์ด ์ ๊ฒŒ ๊ฑธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์„œ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ.

 

ํšก๋‹จ๋ณด๋„์˜ ๋นจ๊ฐ„๋ถˆ์ธ ์‹œ๊ฐ„๊ณผ ์ดˆ๋ก๋ถˆ์ธ ์‹œ๊ฐ„์„ ํŒ๋‹จ์„ ์ž˜ํ•ด์•ผ ํ•œ๋‹ค.

์ž…๋ ฅ ์˜ˆ์ œ ์ค‘ 1๊ฐ€์ง€์˜ ์˜ˆ์‹œ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๋ณด๊ฒ ๋‹ค.

1 2 2 4

์ดˆ๋ก๋ถˆ์ธ ์‹œ๊ฐ„์€ 2๋ถ„์ด๊ณ , ๋นจ๊ฐ„๋ถˆ์ธ ์‹œ๊ฐ„์€ 4์ดˆ๋‹ค.

์ด ์—์‹œ๋ฅผ ๋ณด๋ฉด 2๋ถ„์ด ๊ฒฝ๊ณผํ–ˆ์„ ๋•Œ ํšก๋‹จ๋ณด๋„๋ฅผ ๊ฑด๋„ ์ˆ˜ ์žˆ๊ฒŒ ์ƒ๊ฒผ์ง€๋งŒ ๊ฑด๋„ˆ๋ฉด ์•ˆ ๋œ๋‹ค.

์ •ํ™•ํžˆ 2๋ถ„์ด ๋˜๋Š” ์ˆœ๊ฐ„ ๋นจ๊ฐ„๋ถˆ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.

ํ‘œ๋กœ ๋‚˜ํƒ€๋‚ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์‚ฌ์ง„ 1-1

์‹œ์ž‘ ์งํ›„์ธ 0๋ถ„ ~ 1๋ถ„๊นŒ์ง€๋Š” ์ดˆ๋ก๋ถˆ์ด์ง€๋งŒ 2๋ถ„์ด ๋˜๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ 5๋ถ„๊นŒ์ง€ ๋นจ๊ฐ„๋ถˆ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

์œ„ ํ‘œ๋ฅผ ๋ณด๋ฉด ๋นจ๊ฐ„๋ถˆ์ผ ๋•Œ๋„ 6๋ถ„๊นŒ์ง€ ๋นจ๊ฐ„๋ถˆ์ด ์•„๋‹Œ, 6๋ถ„์ด ๋˜๋Š” ์ˆœ๊ฐ„ ์ดˆ๋ก๋ถˆ์ด ๋œ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ๊ฒฝ๊ณผ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ํšก๋‹จ๋ณด๋„๊ฐ€ ๋นจ๊ฐ„๋ถˆ์ธ์ง€ ์ดˆ๋ก๋ถˆ์ธ์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ๋นจ๊ฐ„๋ถˆ์ด๋ผ๋ฉด ์–ผ๋งˆ๋‚˜ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์ดˆ๋ก์ค„์ด ๋˜๋Š”์ง€๋„ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

์œ„ ์ž…๋ ฅ ์˜ˆ์ œ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด ๋ณด๋ฉด ์ด ํšก๋‹จ๋ณด๋„๋ฅผ ๊ฑด๋„ ๋•Œ ํ•„์š”ํ•œ ์‹œ๊ฐ„์€

1 + 0 ๋˜๋Š” ๋นจ๊ฐ„๋ถˆ์ด ๋‚จ์€ ์‹œ๊ฐ„์ด ๋  ๊ฒƒ์ด๋‹ค. ์œก๊ต๋ฅผ ๊ฑด๋„ˆ๋Š” ์‹œ๊ฐ„์€ ๊ทธ๋ƒฅ 2์ด๊ณ .

์ด ์ƒํ™ฉ์—์„œ ๋” ์‹œ๊ฐ„์ด ์ ๊ฒŒ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ํƒํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฒฝ๊ณผ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ํšก๋‹จ๋ณด๋„๊ฐ€ ์ดˆ๋ก๋ถˆ์ธ์ง€ ๋นจ๊ฐ„๋ถˆ์ธ์ง€ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค.

์ด๋ฅผ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž.

 

<์กฐ๊ฑด 1>

์ผ๋‹จ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์„ ์ €์žฅํ•  ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. time์œผ๋กœ ์ง€์ •ํ•˜๊ฒ ๋‹ค.

๊ฒฝ๊ณผ ์‹œ๊ฐ„์—์„œ ์ดˆ๋ก๋ถˆ๊ณผ ๋นจ๊ฐ„๋ถˆ์˜ ์‹œ๊ฐ„์˜ ํ•ฉ์„ ๊ตฌํ•œ๋‹ค. ์‚ฌ์ง„ 1-1์„ ๋ณด๋ฉด ๊ฒฝ๊ณผ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ํšก๋‹จ๋ณด๋„ ์‚ฌ์ดํด์„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ํŠน์ •ํ•œ ๊ทœ์น™์„ ์ฐพ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. 0, 1, 6, 7์ผ ๋•Œ ํšก๋‹จ๋ณด๋„ ์‚ฌ์ดํด ์‹œ๊ฐ„์ธ 6์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 0, 1์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ์‚ฌ์‹ค์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์—์„œ ํšก๋‹จ๋ณด๋„ ์‚ฌ์ดํด ์‹œ๊ฐ„์„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ ์ดˆ๋ก๋ถˆ์ด ์ผœ์ง€๋Š” ์‹œ๊ฐ„๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

if (time % (green + red) < green)

์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ํ˜„์žฌ ํšก๋‹จ๋ณด๋„๋Š” ์ดˆ๋ก๋ถˆ์ธ ์ƒํƒœ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ๋นจ๊ฐ„๋ถˆ์ด ๋  ๊ฒƒ์ด๋‹ค.

 

<์กฐ๊ฑด 2>

๊ฒฝ๊ณผ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ํšก๋‹จ๋ณด๋„๊ฐ€ ์ดˆ๋ก๋ถˆ์ธ์ง€ ๋นจ๊ฐ„๋ถˆ์ธ์ง€ ์กฐ๊ฑด 1์„ ํ†ตํ•ด ํŒŒ์•…ํ–ˆ์œผ๋ฉด ์ด์ œ ๋นจ๊ฐ„๋ถˆ์ธ ๊ฒฝ์šฐ ๋‚จ์€ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€๋„ ํŒŒ์•…ํ•ด์•ผ ํ•œ๋‹ค. ์‚ฌ์ง„ 1-1์„ ๋ณด๋ฉด ๋นจ๊ฐ„๋ถˆ์ธ ์‹œ๊ฐ„์— ํšก๋‹จ๋ณด๋„ ์‚ฌ์ดํด์„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์ด 2, 3, 4, 5์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ๋‚˜๋จธ์ง€๊ฐ€ 2๋ผ๋ฉด ๋นจ๊ฐ„๋ถˆ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ 4๋ถ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์•ผ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์ด 6๋ถ„์ด ๋ผ์„œ ์ดˆ๋ก๋ถˆ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋  ํ…Œ๋‹ˆ.

๋‹ค๋ฅธ ๊ฒฝ์šฐ๋„ ๊ฐ™๋‹ค 3์ธ ๊ฒฝ์šฐ์—๋Š” 3๋ถ„์„, 4์ธ ๊ฒฝ์šฐ์—๋Š” 2๋ถ„์„, 5์ธ ๊ฒฝ์šฐ์—๋Š” 1๋ถ„์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์ดˆ๋ก๋ถˆ์ด ๋œ๋‹ค.

๋ฐ”๋กœ ๊ทœ์น™์ด ๋ณด์ด์ง€ ์•Š๋Š”๊ฐ€? ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ ๋‚˜๋จธ์ง€๊ฐ’์˜ ํ•ฉ์ด ํšก๋‹จ๋ณด๋„ ์‚ฌ์ดํด(6๋ถ„)๊ณผ ๋™์ผํ•˜๋‹ค.

๋Œ€๊ธฐ ์‹œ๊ฐ„(๋นจ๊ฐ„๋ถˆ์ผ ๋•Œ) + ๋‚˜๋จธ์ง€ ๊ฐ’ = ํšก๋‹จ๋ณด๋„ ์‚ฌ์ดํด

 

์ด๋ฅผ ํ™œ์šฉํ•ด ํšก๋‹จ๋ณด๋„ ์‚ฌ์ดํด ์‹œ๊ฐ„์— ํ˜„์žฌ ๋‚˜๋จธ์ง€๊ฐ’์„ ๋นผ์ฃผ๊ฒŒ ๋˜๋ฉด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค.

์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด ๋ณด์ž.

(green + red) - time % (green + red)

๋‚˜๋จธ์ง€ ๊ฐ’์€ ์กฐ๊ฑด 1์— ์‚ฌ์šฉํ•œ ์กฐ๊ฑด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ํšก๋‹จ๋ณด๋„ ์‚ฌ์ดํด์—์„œ ๋‚˜๋จธ์ง€๋ฅผ ๋นผ์ฃผ๋ฉด ๋‚จ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ์ฝ”๋“œ

๋”๋ณด๊ธฐ
import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.min

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val cross = readLine().toInt()
    var time = 0

    for (i in 0 until cross) {
        val (crosswalk, viaduct, green, red) = readLine().split(" ").map { it.toInt() }

        val crossingTime = if (time % (green + red) < green) {
            0
        } else {
            // ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋˜์•ผ ์ถœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.
            (green + red) - time % (green + red)
        }

        time += min(crossingTime + crosswalk, viaduct)
    }

    println(time)
}

 

๋ฌธ์ œ ํ’€์ด

์ž…๋ ฅ์„ ํšก๋‹จ๋ณด๋„, ์œก๊ต, ์ดˆ๋ก๋ถˆ, ๋นจ๊ฐ„๋ถˆ ์ˆœ์œผ๋กœ ์ž…๋ ฅ๋ฐ›๊ณ  ๊ฒฝ๊ณผ ์‹œ๊ฐ„์„ ํ™•์ธํ•  time์„ ์ƒ์„ฑํ•œ๋‹ค.

ํšก๋‹จ๋ณด๋„๋ฅผ ํƒํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

์กฐ๊ฑด 1์„ ์ด์šฉํ•ด ์กฐ๊ฑด 1์„ ๋งŒ์กฑํ•˜๊ฒŒ ๋˜๋ฉด ์ดˆ๋ก๋ถˆ์ธ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์ถ”๊ฐ€์ ์ธ ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ ์—†๋‹ค. ์ฆ‰ 0๋ถ„์ด๋‹ค.

์กฐ๊ฑด 1์ด ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ”๋กœ ์กฐ๊ฑด 2๋ฅผ ์ด์šฉํ•ด์„œ ๋‚จ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค. ์ถ”๊ฐ€ ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ตœ์ข…์ ์œผ๋กœ crossingTime์€ 0 ๋˜๋Š” ์ถ”๊ฐ€ ์‹œ๊ฐ„์ด ๋  ๊ฒƒ์ด๋‹ค.

 

์ด์ œ time์—์„œ ์œก๊ต๋ฅผ ๊ฑด๋„ˆ๋Š” ์‹œ๊ฐ„(viaduct)๊ณผ ํšก๋‹จ๋ณด๋„๋ฅผ ๊ฑด๋„ˆ๋Š” ์‹œ๊ฐ„์—์„œ ์ถ”๊ฐ€ ์‹œ๊ฐ„์„ ๋”ํ•œ ์‹œ๊ฐ„(crossingTime + crosswalk)์—์„œ ๋” ์ž‘์€ ๊ฐ’์„ ํƒํ•ด์„œ ๊ทธ๋งŒํผ time์„ ๋Š˜๋ ค์ค€๋‹ค.

๊ทธ๋Ÿผ ์ตœ์ ์˜ ์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋“  ๊ธธ์„ ๊ฑด๋„ ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •

์‚ฌ์น™ ์—ฐ์‚ฐ๊ณผ ๋‚˜๋จธ์ง€๋กœ ๋นจ๊ฐ„๋ถˆ์ผ ๋•Œ์˜ ๋‚จ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ตฌํ•˜๋Š” ๊ฒŒ ํ•ต์‹ฌ์ด๋‹ค. ๋˜ํ•œ ๋ฌธ์ œ ์กฐ๊ฑด์— ์žˆ๋‹ค์‹œํ”ผ ์ •ํ™•ํžˆ ์‹œ๊ฐ„์— ํšก๋‹จ๋ณด๋„์— ๋„๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด ์‹ ํ˜ธ๋“ฑ์ด ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ๋„ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.

๊ทธ๊ฑฐ ๋ง๊ณ ๋Š” ํ‰๋ฒ”ํ•œ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์ด๋‹ค.

728x90