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

[Kotlin, S2] ๋ฐฑ์ค€ 30804๋ฒˆ ๊ณผ์ผ ํƒ•ํ›„๋ฃจ

by immgga 2024. 8. 5.

์ถœ์ฒ˜: unsplash.com

 

๊ณผ์ผ ํƒ•ํ›„๋ฃจ(30804๋ฒˆ)

Silver 2

#๊ตฌํ˜„ #๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ #๋‘ ํฌ์ธํ„ฐ

 

๋ฌธ์ œ ๋‚ด์šฉ

 

 

๋ฌธ์ œ ์ ‘๊ทผ

ํƒ•ํ›„๋ฃจ์— ๊ฝ‚ํ˜€ ์žˆ๋Š” ๊ณผ์ผ์˜ ์ข…๋ฅ˜๋Š” ์ด 9์ข…๋ฅ˜์ด๊ณ  ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ํƒ•ํ›„๋ฃจ๋Š” ํŠน์ • ๊ณผ์ผ 2๊ฐœ๊ฐ€ ์—ฐ์†๋˜์–ด ์žˆ๋Š” ํƒ•ํ›„๋ฃจ ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— 9C2์˜ ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ์ฒดํฌํ•ด์„œ ๊ฐ€์žฅ ๊ธด ๊ธธ์ด๊ฐ€ ์ •๋‹ต์ด ๋  ๊ฒƒ์ด๋‹ค.

 

๊ธธ์ด๋ฅผ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ๋‹จ 9์ข…๋ฅ˜์˜ ๊ณผ์ผ ์ค‘์—์„œ ์ค‘๋ณต์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ์„ ํƒํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 2์ค‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž์„ธํ•œ ์„ค๋ช…์€ ์กฐํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฒ€์ƒ‰ํ•ด ๋ณด๋ฉด ์ž์„ธํ•œ ์„ค๋ช…์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค.

๋ฒ”์œ„๋Š” ๊ณผ์ผ 1๋ถ€ํ„ฐ 9๊นŒ์ง€์ด๊ธฐ ๋•Œ๋ฌธ์— 1..9๋กœ ์„ค์ •ํ•ด ์ค€๋‹ค.

 

<์กฐ๊ฑด 1>

๊ทธ๋‹ค์Œ ์„ ํƒ๋œ ๋‘ ๊ณผ์ผ์ด ์ž…๋ ฅ๊ฐ’์— ์žˆ์œผ๋ฉด ๊ธธ์ด ์นด์šดํŠธ๋ฅผ ์„ธ์ค˜์•ผ ํ•œ๋‹ค.

์ž…๋ ฅ๊ฐ’์ด ๋‘ ๊ณผ์ผ ์ค‘ ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ฅด๋Š” ์กฐ๊ฑด์„ ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

tanghulu[k] == i || tanghulu[k] == j

์œ„ ์กฐ๊ฑด์ด ๋งž์œผ๋ฉด ๊ธธ์ด ์นด์šดํŠธ๋ฅผ ์„ธ์ค€๋‹ค. ์—ฐ์†ํ•ด์„œ ์œ„ ์กฐ๊ฑด์ด ๋งŒ์กฑํ•œ๋‹ค๋ฉด ์ถ”๊ฐ€์ ์œผ๋กœ ๊ธธ์ด๊ฐ€ ๋Š˜์–ด๋‚  ๊ฒƒ์ด๋‹ค.

 

<์กฐ๊ฑด 2>

์œ„ ์กฐ๊ฑด 1์ด ๋งŒ์กฑํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ์—๋Š” ํ˜„์žฌ ๊ธฐ๋ก๋œ ๊ธธ์ด ์นด์šดํŠธ์™€ ํ˜„์žฌ ์ตœ๋Œ€ ๊ธธ์ด ์ค‘์— ๋” ํฐ ๊ฐ’์„ ๊ณจ๋ผ์ค˜์•ผ ํ•œ๋‹ค.

์›๋ž˜๋ผ๋ฉด ๋”ฐ๋กœ ์กฐ๊ฑด๋ฌธ์„ ์ž‘์„ฑํ•ด์•ผ ํ•˜์ง€๋งŒ Kotlin์—์„œ๋Š” max() ํ•จ์ˆ˜๋กœ ์‰ฝ๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค.

res = max(res, cnt)
cnt = 0

res๋ณด๋‹ค cnt(๊ธธ์ด ์นด์šดํŠธ)๊ฐ€ ํฌ๋ฉด res๊ฐ€ ๊ฐฑ์‹ ์ด ๋  ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ ๊ฐฑ์‹ ์„ ํ•ด์ฃผ๊ณ  cnt๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ๋„ ์žŠ์œผ๋ฉด ์•ˆ ๋œ๋‹ค.

 

 

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

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

private var tanghulu = listOf<Int>()

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    readLine().toInt()
    tanghulu = readLine().split(" ").map { it.toInt() }
    var answer = 0

    for (i in 1 .. 9) {
        for (j in i + 1 .. 9) {
            answer = max(answer, getLongestTanghulu(i, j))
        }
    }

    println(answer)
}

private fun getLongestTanghulu(i: Int, j: Int): Int {
    var res = 0
    var cnt = 0

    for (k in tanghulu.indices) {
        if (tanghulu[k] == i || tanghulu[k] == j) {
            cnt++
        } else {
            res = max(res, cnt)
            cnt = 0
        }
    }

    res = max(res, cnt)
    return res
}

 

๋ฌธ์ œ ํ’€์ด

ํ˜„์žฌ ๋งŒ๋“  ํƒ•ํ›„๋ฃจ๋ฅผ tanghulu List์— ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

๊ทธ๋ฆฌ๊ณ  9์ข…๋ฅ˜์˜ ๊ณผ์ผ ์ค‘์—์„œ 2๊ฐœ๋ฅผ ์ค‘๋ณต ์—†์ด ๊ณ ๋ฅด๋Š” ๊ฒฝ์šฐ๋ฅผ 2์ค‘ for๋กœ ๊ตฌ์„ฑํ•ด์„œ ์•ˆ์—์„œ answer๋ฅผ ๊ฐฑ์‹ ์‹œ์ผœ ์ค€๋‹ค.

๊ณ ๋ฅธ ๊ณผ์ผ 2๊ฐœ๊ฐ€ ์—ฐ์†๋œ ๊ฐ€์žฅ ๊ธด ํƒ•ํ›„๋ฃจ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด getLongestTanghulu๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

 

getLongestTanghulu์—์„œ๋Š” tanghulu๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์„ ํƒ๋œ ๊ณผ์ผ 2๊ฐœ๊ฐ€ ์—ฐ์†ํ•ด์„œ ๋“ค์–ด ์žˆ๋Š” ๊ฐ€์žฅ ๊ธด ํƒ•ํ›„๋ฃจ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๊ณ , ๊ตฌํ•œ ํƒ•ํ›„๋ฃจ์˜ ๊ธธ์ด(cnt)๊ฐ€ ํ˜„์žฌ ๊ฐ€์žฅ ๊ธด ํƒ•ํ›„๋ฃจ์˜ ๊ธธ์ด(res) ๋ณด๋‹ค ํฐ์ง€ ํ™•์ธํ•ด ์ฃผ๊ณ  ํฌ๋ฉด ๊ต์ฒดํ•œ๋‹ค.

๋ฐ˜๋ณต์ด ๋๋‚œ ํ›„, ๋งˆ์ง€๋ง‰์— ์กฐ๊ฑด 1์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ๋๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด 2๋ฅผ ๋ฐ˜๋ณต ๋๋‚˜๊ณ  ๋‹ค์‹œ ๊ฒ€์‚ฌํ•ด ์ค€๋‹ค.

๊ทธ๋ž˜์•ผ ์ •ํ™•ํ•œ ๊ฐ’์„ return ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

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

์›๋ž˜ ํˆฌ ํฌ์ธํ„ฐ๋กœ ํ‘ธ๋Š” ๋ฌธ์ œ์ด์ง€๋งŒ, ๊ณผ์ผ ์ข…๋ฅ˜๊ฐ€ ์ ์–ด์„œ ๋ฌด์ง€์„ฑ ํƒ์ƒ‰(๋ธŒ๋ฃจํŠธํฌ์Šค)์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํˆฌ ํฌ์ธํ„ฐ์— ๋Œ€ํ•ด์„œ๋Š” ๊ณต๋ถ€๋ฅผ ์ข€ ํ•ด๋ณด๊ณ  ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณผ ์ƒ๊ฐ์ด๋‹ค.

์ดํ•ด๊ฐ€ ๋œ ๋œ ํˆฌ ํฌ์ธํ„ฐ๋กœ ํ’€์–ด๋ณด๋ ค๋‹ค ์‹คํŒจํ•˜๊ณ  ๋ฌด์ง€์„ฑ ํƒ์ƒ‰์œผ๋กœ ํ’€์–ด๋ณธ ๋ฌธ์ œ์ด๋‹ค.

728x90