λ¬Έμ
Nκ°μ μλ‘ μ΄λ£¨μ΄μ§ μμ΄ A1, A2, ..., ANμ΄ μ£Όμ΄μ§λ€. λ, μμ μ μ¬μ΄μ λΌμλ£μ μ μλ N-1κ°μ μ°μ°μκ° μ£Όμ΄μ§λ€. μ°μ°μλ λ§μ (+), λΊμ (-), κ³±μ (Γ), λλμ (Γ·)μΌλ‘λ§ μ΄λ£¨μ΄μ Έ μλ€.
μ°λ¦¬λ μμ μ μ¬μ΄μ μ°μ°μλ₯Ό νλμ© λ£μ΄μ, μμμ νλ λ§λ€ μ μλ€. μ΄λ, μ£Όμ΄μ§ μμ μμλ₯Ό λ°κΎΈλ©΄ μ λλ€.
μλ₯Ό λ€μ΄, 6κ°μ μλ‘ μ΄λ£¨μ΄μ§ μμ΄μ΄ 1, 2, 3, 4, 5, 6μ΄κ³ , μ£Όμ΄μ§ μ°μ°μκ° λ§μ (+) 2κ°, λΊμ (-) 1κ°, κ³±μ (Γ) 1κ°, λλμ (Γ·) 1κ°μΈ κ²½μ°μλ μ΄ 60κ°μ§μ μμ λ§λ€ μ μλ€. μλ₯Ό λ€μ΄, μλμ κ°μ μμ λ§λ€ μ μλ€.
- 1+2+3-4Γ5Γ·6
- 1Γ·2+3+4-5Γ6
- 1+2Γ·3Γ4-5+6
- 1Γ·2Γ3-4+5+6
μμ κ³μ°μ μ°μ°μ μ°μ μμλ₯Ό 무μνκ³ μμμλΆν° μ§νν΄μΌ νλ€. λ, λλμ μ μ μ λλμ μΌλ‘ λͺ«λ§ μ·¨νλ€. μμλ₯Ό μμλ‘ λλ λλ C++14μ κΈ°μ€μ λ°λ₯Έλ€. μ¦, μμλ‘ λ°κΎΌ λ€ λͺ«μ μ·¨νκ³ , κ·Έ λͺ«μ μμλ‘ λ°κΎΌ κ²κ³Ό κ°λ€. μ΄μ λ°λΌμ, μμ μ 4κ°μ κ²°κ³Όλ₯Ό κ³μ°ν΄λ³΄λ©΄ μλμ κ°λ€.
- 1+2+3-4Γ5Γ·6 = 1
- 1Γ·2+3+4-5Γ6 = 12
- 1+2Γ·3Γ4-5+6 = 5
- 1Γ·2Γ3-4+5+6 = 7
Nκ°μ μμ N-1κ°μ μ°μ°μκ° μ£Όμ΄μ‘μ λ, λ§λ€ μ μλ μμ κ²°κ³Όκ° μ΅λμΈ κ²κ³Ό μ΅μμΈ κ²μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ μμ κ°μ N(2 β€ N β€ 11)κ° μ£Όμ΄μ§λ€. λμ§Έ μ€μλ A1, A2, ..., ANμ΄ μ£Όμ΄μ§λ€. (1 β€ Ai β€ 100) μ μ§Έ μ€μλ ν©μ΄ N-1μΈ 4κ°μ μ μκ° μ£Όμ΄μ§λλ°, μ°¨λ‘λλ‘ λ§μ (+)μ κ°μ, λΊμ (-)μ κ°μ, κ³±μ (Γ)μ κ°μ, λλμ (Γ·)μ κ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ λ§λ€ μ μλ μμ κ²°κ³Όμ μ΅λκ°μ, λμ§Έ μ€μλ μ΅μκ°μ μΆλ ₯νλ€. μ°μ°μλ₯Ό μ΄λ»κ² λΌμλ£μ΄λ νμ -10μ΅λ³΄λ€ ν¬κ±°λ κ°κ³ , 10μ΅λ³΄λ€ μκ±°λ κ°μ κ²°κ³Όκ° λμ€λ μ λ ₯λ§ μ£Όμ΄μ§λ€. λν, μμμλΆν° κ³μ°νμ λ, μ€κ°μ κ³μ°λλ μμ κ²°κ³Όλ νμ -10μ΅λ³΄λ€ ν¬κ±°λ κ°κ³ , 10μ΅λ³΄λ€ μκ±°λ κ°λ€.
μμ μ λ ₯ 1
2
5 6
0 0 1 0
μμ μΆλ ₯ 1
30
30
μμ μ λ ₯ 2
3
3 4 5
1 0 1 0
μμ μΆλ ₯ 2
35
17
μμ μ λ ₯ 3
6
1 2 3 4 5 6
2 1 1 1
μμ μΆλ ₯ 3
54
-24
νμ΄
λͺ¨λ κ²½μ°μ μλ₯Ό κ³μ°νλ μμ νμ
κΉμ΄μ°μ νμ(DFS)μ λ°±νΈλνΉ μ°μ΅ λ¬Έμ
μ½λ
import java.util.*
fun main() = with(System.`in`.bufferedReader()) {
// μ°μ¬μ λΌμλ£κΈ°, μ¬κ·μ°μ΅
val N = readLine().toInt()
val nl = readLine().split(" ").map{it.toInt()}.toIntArray()
val ol = readLine().split(" ").map{it.toInt()}.toIntArray() // +, -, *, /
var min = Int.MAX_VALUE
var max = Int.MIN_VALUE
fun dfs(level: Int, currentValue: Int) {
// μ΅μ’
κΉμ΄μμ κ²°κ³Όκ° λμΆ
if(level == N) {
min = minOf(min, currentValue)
max = maxOf(max, currentValue)
return
}
// μ°μ°μ 루ν
for(i in 0..3) {
if(ol[i] > 0){
ol[i]-- // μ°μ°μ μ¬μ©
val nextValue = when(i) {
0 -> currentValue + nl[level]
1 -> currentValue - nl[level]
2 -> currentValue * nl[level]
3 -> currentValue / nl[level]
else -> currentValue
}
dfs(level + 1, nextValue) // μ¬κ·
ol[i]++ // μ°μ°μ λ°±νΈλνΉ
}
}
}
dfs(1, nl[0]) // DFS νμ μμ
println("${max}\n${min}") // κ²°κ³Ό μΆλ ₯
}
μ¬κ·νμμ κ²½μ°, λ°±νΈλνΉκ³Ό μ§μ μ΄λ£¬λ€.
'Programming > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] Softeer Level 2- "GPTμ μ«μ λΉκ΅" μλ° νμ΄ (0) | 2025.04.06 |
---|---|
[Kotlin] λ°±μ€ 2504 κ΄νΈμ κ° μ½νλ¦° νμ΄ - stack (0) | 2025.03.31 |
[Kotlin] λ°±μ€ 1978 μμ μ°ΎκΈ° (1) | 2025.03.08 |
[Kotlin] λ°±μ€ 1292 - μ½κ² νΈλ λ¬Έμ (1) | 2024.11.13 |
[Kotlin] λ°±μ€ 2693 - Nλ²μ§Έ ν° μ (2) | 2024.10.27 |