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

[Kotlin, S5] ๋ฐฑ์ค€ 9196๋ฒˆ ์ •์ˆ˜ ์ง์‚ฌ๊ฐํ˜•

by immgga 2024. 8. 9.

์ถœ์ฒ˜: unsplash.com

 

์ •์ˆ˜ ์ง์‚ฌ๊ฐํ˜•(9196๋ฒˆ)

Silver 5

#๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ #์ •๋ ฌ #๋Ÿฐํƒ€์ž„ ์ „์˜ ์ „์ฒ˜๋ฆฌ

 

๋ฌธ์ œ ๋‚ด์šฉ

 

 

๋ฌธ์ œ ์ ‘๊ทผ

๋ฌธ์ œ์—์„œ์˜ ์ง์‚ฌ๊ฐํ˜•์˜ ํฌ๊ธฐ๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€์ด๋‹ค.

1. ๋Œ€๊ฐ์„ ์ด ๋” ๊ธด ์ง์‚ฌ๊ฐํ˜•์ด ๋” ํฐ ์ง์‚ฌ๊ฐํ˜•์ด๋‹ค.

2. ๋Œ€๊ฐ์„ ์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ๋†’์ด๊ฐ€ ๋” ๋†’์€ ๊ฒƒ์ด ๋” ํฐ ์ง์‚ฌ๊ฐํ˜•์ด๋‹ค.

์ด 2๊ฐ€์ง€ ์กฐ๊ฑด์„ ์ด์šฉํ•ด ์ž…๋ ฅ๋ฐ›๋Š” ์ง์‚ฌ๊ฐํ˜•๋ณด๋‹ค ํฐ ์ง์‚ฌ๊ฐํ˜• ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ง์‚ฌ๊ฐํ˜•์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

 

๋ฌธ์ œ ์กฐ๊ฑด์ด ์ง์‚ฌ๊ฐํ˜• ๊ฐ’์ด 150์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฌ๋ฉด ์ „์ฒด ํƒ์ƒ‰์„ ํ•ด๋„ ์ƒ๊ด€์—†๋Š” ์ œํ•œ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋†’์ด์™€ ๋„ˆ๋น„๊ฐ€ 1๋ถ€ํ„ฐ 150๊นŒ์ง€์˜ ์ง์‚ฌ๊ฐํ˜•๋“ค์„ ๋ชจ๋‘ ๋ฝ‘์•„์„œ ์ •๋ ฌ์‹œํ‚ค๋ฉด ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฌธ์ œ์— ์กฐ๊ฑด์ด ์žˆ๋‹ค.

1. ๋„ˆ๋น„(w)๊ฐ€ ๋†’์ด(h) ๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.

2. ์ง์‚ฌ๊ฐํ˜•๋งŒ์„ ๋ฝ‘์•„์•ผ ํ•œ๋‹ค.

์œ„ 2๊ฐ€์ง€์˜ ์กฐ๊ฑด์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด์ž.

 

์šฐ์„  ๋†’์ด์™€ ๋„ˆ๋น„๊ฐ€ ๊ฐ 1๋ถ€ํ„ฐ 150๊นŒ์ง€ ๋ฝ‘์„ ์ˆ˜ ์žˆ๋Š” 2์ค‘ ๋ฐ˜๋ณต์„ ํ•ด์•ผ ํ•œ๋‹ค.

๊ฑฐ๊ธฐ์„œ w(๋„ˆ๋น„)๋Š” ๋†’์ด๋ณด๋‹ค ๋ฌด์กฐ๊ฑด ์ปค์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ์ •์‚ฌ๊ฐํ˜•์ด ๋˜๋ฉด ์•ˆ ๋œ๋‹ค.

val allSquare = mutableListOf<List<Int>>()
// ๋„ˆ๋น„๊ฐ€ ๋†’์ด๋ณด๋‹ค ์ปค์•ผ ํ•จ.
for (h in 1 .. 150) {
    for (w in h .. 150) {
        if (h == w) continue
        allSquare.add(listOf(h, w))
    }
}

์œ„ ๋ฐ˜๋ณต์—์„œ w๊ฐ€ h๋ณด๋‹ค ํฐ ์ง์‚ฌ๊ฐํ˜•๋“ค์ด ๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ธฐ๊ฒŒ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ธด ์ƒํƒœ๋Š” ํ˜„์žฌ ๋ฌธ์ œ ์กฐ๊ฑด์˜ ์ง์‚ฌ๊ฐํ˜• ํฌ๊ธฐ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒŒ ์•„๋‹ˆ๋‹ค.

๋ฌธ์ œ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ •๋ ฌํ•ด ์ค˜์•ผ ํ•œ๋‹ค.

 

์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋‚ฎ์€ ๋†’์ด ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•ด์ค€ ๋‹ค์Œ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋Œ€๊ฐ์„  ๊ธธ์ด ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์„ ํ•ด์ค€๋‹ค.

allSquare.sortBy { it[0] }
allSquare.sortBy { it[0] * it[0] + it[1] * it[1] }

์ด์ œ allSquare์—๋Š” ๋ฌธ์ œ ์กฐ๊ฑด์— ๋งž๋Š” ์ง์‚ฌ๊ฐํ˜•๋“ค์ด ์ž‘์€ ๊ฒƒ์—์„œ ํฐ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋˜์–ด ๋“ค์–ด๊ฐ„๋‹ค.

์ด ๋ฆฌ์ŠคํŠธ์—์„œ ์ž…๋ ฅ๊ฐ’์ด ๋“ค์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ index์˜ ๋‹ค์Œ ๊ฐ’์ด ํฐ ์ง์‚ฌ๊ฐํ˜• ์ค‘ ์ œ์ผ ์ž‘์€ ์ง์‚ฌ๊ฐํ˜•์ด ๋  ๊ฒƒ์ด๋‹ค.

 

 

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

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

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val allSquare = mutableListOf<List<Int>>()
    // ๋„ˆ๋น„๊ฐ€ ๋†’์ด๋ณด๋‹ค ์ปค์•ผ ํ•จ.
    for (h in 1 .. 150) {
        for (w in h .. 150) {
            if (h == w) continue
            allSquare.add(listOf(h, w))
        }
    }
    allSquare.sortBy { it[0] }
    allSquare.sortBy { it[0] * it[0] + it[1] * it[1] }

    while (true) {
        val square = readLine().split(" ").map { it.toInt() }
        if (square == listOf(0, 0)) break

        val index = allSquare.indexOf(square)
        println(allSquare[index + 1].joinToString(" "))
    }
}

 

๋ฌธ์ œ ํ’€์ด

allSquare์„ 1๋ถ€ํ„ฐ 150๊นŒ์ง€์˜ ์ง์‚ฌ๊ฐํ˜•๋“ค์„ ๋ชจ๋‘ ๋ชจ์•„์„œ ๋ฌธ์ œ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ •๋ ฌํ•ด ์ค€๋‹ค.

์ž…๋ ฅ๊ฐ’์ด 0 0์ด ๋“ค์–ด์˜ฌ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

allSquare์—์„œ ์ž…๋ ฅ๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฐ’์ด ๋“ค์–ด ์žˆ๋Š” index๋ฅผ ์ฐพ์•„ ์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฐพ์€ index์˜ ๋‹ค์Œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

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

์“ธ๋ฐ์—†์ด ํšจ์œจ์ ์ด๊ฒŒ ํ’€๋ ค๋‹ค๊ฐ€ ์‹œ๊ฐ„๋‚ญ๋น„๋งŒ ํ•œ ๋ฌธ์ œ์ด๋‹ค.

๋ฌธ์ œ ์ œํ•œ์ด ์ž‘์•„์„œ ๋‹จ์ˆœํ•˜๊ฒŒ ๋ฌด์ง€์„ฑ ์ „์ฒด ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ์ด๋‹ค.

์ „์ฒด ํƒ์ƒ‰์ด ํ™•์‹คํžˆ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌธ์ œ ๋ฒ”์œ„๊ฐ€ ์ž‘์„ ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž.

728x90