๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ฏ | ๋ฐฑ์ค€/๐Ÿ˜€ | Bronze

[Kotlin, B1] ๋ฐฑ์ค€ 32343๋ฒˆ ๋“œ๋ž ๋” ๋น„ํŠธ

by immgga 2024. 9. 23.

์ถœ์ฒ˜: unsplash.com

 

๋“œ๋ž ๋” ๋น„ํŠธ(32343๋ฒˆ)

Bronze 1

#๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ #๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ #๋น„ํŠธ๋งˆ์Šคํ‚น

2024 HICON ํ™์ต๋Œ€ํ•™๊ต ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝ์ง„๋Œ€ํšŒ B๋ฒˆ

https://www.acmicpc.net/problem/32343

 

๋ฌธ์ œ ๋‚ด์šฉ

 

 

๋ฌธ์ œ ์ ‘๊ทผ

n์ž๋ฆฌ์˜ 2์ง„์ˆ˜์—์„œ ๊ฐ๊ฐ 1์˜ ๊ฐœ์ˆ˜๊ฐ€ a, b๊ฐœ์ธ 2์ง„์ˆ˜ 2๊ฐœ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋‘ 2์ง„์ˆ˜์˜ xor ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ์ œ์ผ ํฐ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

n์ž๋ฆฌ์˜ 2์ง„์ˆ˜์—์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋Š” 2์˜ n์Šน์— - 1๋งŒํผ ๋‚˜์˜จ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 3์ž๋ฆฌ์˜ 2์ง„์ˆ˜์—์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ“๊ฐ’์€ 2์˜ 3์Šน์— -1์ด๋ฏ€๋กœ 7์ด๋‹ค. 1๋ถ€ํ„ฐ 7๊นŒ์ง€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

๊ทธ๋ž˜์„œ 1๋ถ€ํ„ฐ n์ž๋ฆฌ์˜ 2์ง„์ˆ˜์—์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ“๊ฐ’๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ ๋ฐ˜๋ณต๋˜๋Š” ์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ ํ›„, 1์˜ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•ด์„œ 1์˜ ๊ฐœ์ˆ˜๊ฐ€ a, b๊ฐœ์ธ case๋ฅผ ๋ชจ๋‘ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

1์˜ ๊ฐœ์ˆ˜๊ฐ€ a, b๊ฐœ์ธ case๋“ค์„ ๋ชจ๋‘ ๊ตฌํ•˜๊ณ  ๋‚˜๋ฉด a, b case๋“ค์—์„œ aCase xor bCase๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•„์ฃผ๋ฉด ๋œ๋‹ค.

 

 

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

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

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val size = readLine().toInt()
    val (a, b) = readLine().split(" ").map { it.toInt() }
    val aCases = mutableListOf<Int>()
    val bCases = mutableListOf<Int>()

    for (i in 0 until 2.0.pow(size).toInt()) {
        val value = i.toString(2)
        val oneCnt = value.filter { it == '1' }.length

        if (oneCnt == a) aCases.add(i)
        if (oneCnt == b) bCases.add(i)
    }

    var answer = 0
    for (i in 0 until aCases.size) {
        for (j in 0 until bCases.size) {
            answer = max(answer, aCases[i] xor bCases[j])
        }
    }

    println(answer)
}

 

๋ฌธ์ œ ํ’€์ด

size์ž๋ฆฌ์˜ 2์ง„์ˆ˜์—์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ for๋ฌธ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ํ›„ ๋ฐ˜๋ณตํ•œ๋‹ค.

i์˜ 2์ง„์ˆ˜๊ฐ’์˜ 1์˜ ๊ฐœ์ˆ˜๊ฐ€ a๊ฐœ๋ฉด aCase์— ์ถ”๊ฐ€ํ•˜๊ณ , b๊ฐœ๋ฉด bCase์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

์ถ”๊ฐ€๋œ case๋“ค์„ ํƒ์ƒ‰ํ•ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ํ™•์ธํ•œ๋‹ค.

aCase xor bCase์˜ ๊ฒฝ์šฐ๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

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

๋Œ€ํšŒ์—์„œ ํ’€ ๋•Œ๋Š” a, b์˜ ํ•ฉ์ด n๋ณด๋‹ค ํฌ๋ฉด ์ค‘๋ณต๋˜๋Š” ์ˆ˜๊ฐ€ 1๊ฐœ ์ด์ƒ ์žˆ๋‹ค๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋‹ค.

3
2 2

์œ„ case์˜ ๊ฒฝ์šฐ a + b๊ฐ€ 4์ด๋ฏ€๋กœ ๊ฐ ์ž๋ฆฟ์ˆ˜์— ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์ตœ์†Œ 1๊ฐœ๋Š” ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— 2์ง„์ˆ˜ 111์—์„œ 1๊ฐœ์˜ 0์„ ์ถ”๊ฐ€ํ•ด์„œ ๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’์ธ 110 = 6์„ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์˜ค๋‹ต์ด ๋‚˜์™”๋‹ค.

์–ด๋–ค ๋ฐ˜๋ก€๊ฐ€ ์žˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ์ „์ฒด ํƒ์ƒ‰์œผ๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค.

728x90