λ°±μ€ λ¬Έμ λͺ¨μ
λ¬Έμ λ§ν¬
https://www.acmicpc.net/problem/1874
1874λ²: μ€ν μμ΄
1λΆν° nκΉμ§μ μμ λν΄ μ°¨λ‘λ‘ [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] μ°μ°μ μννλ©΄ μμ΄ [4, 3, 6, 8, 7, 5, 2, 1]μ μ»μ μ μλ€.
www.acmicpc.net
λ¬Έμ
μ€ν (stack)μ κΈ°λ³Έμ μΈ μλ£κ΅¬μ‘° μ€ νλλ‘, μ»΄ν¨ν° νλ‘κ·Έλ¨μ μμ±ν λ μμ£Ό μ΄μ©λλ κ°λ
μ΄λ€. μ€νμ μλ£λ₯Ό λ£λ (push) μ
ꡬμ μλ£λ₯Ό λ½λ (pop) μ
κ΅¬κ° κ°μ μ μΌ λμ€μ λ€μ΄κ° μλ£κ° μ μΌ λ¨Όμ λμ€λ (LIFO, Last in First out) νΉμ±μ κ°μ§κ³ μλ€.
1λΆν° nκΉμ§μ μλ₯Ό μ€νμ λ£μλ€κ° λ½μ λμ΄λμμΌλ‘μ¨, νλμ μμ΄μ λ§λ€ μ μλ€. μ΄λ, μ€νμ push νλ μμλ λ°λμ μ€λ¦μ°¨μμ μ§ν€λλ‘ νλ€κ³ νμ. μμμ μμ΄μ΄ μ£Όμ΄μ‘μ λ μ€νμ μ΄μ©ν΄ κ·Έ μμ΄μ λ§λ€ μ μλμ§ μλμ§, μλ€λ©΄ μ΄λ€ μμλ‘ pushμ pop μ°μ°μ μνν΄μΌ νλμ§λ₯Ό μμλΌ μ μλ€. μ΄λ₯Ό κ³μ°νλ νλ‘κ·Έλ¨μ μμ±νλΌ.
μ λ ₯
첫 μ€μ n (1 ≤ n ≤ 100,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° nκ°μ μ€μλ μμ΄μ μ΄λ£¨λ 1 μ΄μ nμ΄νμ μ μκ° νλμ© μμλλ‘ μ£Όμ΄μ§λ€. λ¬Όλ‘ κ°μ μ μκ° λ λ² λμ€λ μΌμ μλ€.
μΆλ ₯
μ λ ₯λ μμ΄μ λ§λ€κΈ° μν΄ νμν μ°μ°μ ν μ€μ ν κ°μ© μΆλ ₯νλ€. pushμ°μ°μ +λ‘, pop μ°μ°μ -λ‘ νννλλ‘ νλ€. λΆκ°λ₯ν κ²½μ° NOλ₯Ό μΆλ ₯νλ€.
μ μΆλ ₯ μμ
μκ³ λ¦¬μ¦ λΆλ₯
- μλ£ κ΅¬μ‘°
- μ€ν
λ¬Έμ νμ΄
- νμ¬μ μ μλ₯Ό λνλ΄κΈ° μν λ³μ currentλ₯Ό 1λ‘ μ΄κΈ°ννμ¬ μ μΈνλ€.
- currentλ₯Ό μ λ ₯λ°μ μ μ numκΉμ§ 1μ© μ¦κ°μν€λ©΄μ stackμ μΆκ°ν ν result λ³μμ +λ₯Ό μΆκ°νλ€.
- stackμ λ§μ§λ§ μμκ° numκ³Ό κ°λ€λ©΄ stackμ λ§μ§λ§ μμλ₯Ό μμ ν ν result λ³μμ -λ₯Ό μΆκ°νλ€.
- stackμ΄ λΉμ΄μλ€λ©΄ resultλ₯Ό μΆλ ₯νκ³ , μλλΌλ©΄ λΆκ°λ₯ν κ²½μ°μ΄κΈ° λλ¬Έμ "No"λ₯Ό μΆλ ₯νλ€.
μμ€μ½λ
let n = Int(readLine()!)!
var result = "", current = 1
var stack = [Int]()
for _ in 0..<n {
let num = Int(readLine()!)!
while current <= num {
stack.append(current)
result += "+\n"
current += 1
}
if stack.last! == num {
stack.removeLast()
result += "-\n"
}
}
stack.isEmpty ? print(result) : print("NO")
- 88ms μμ
'β¨οΈ Language > swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ½λνΈλ¦¬] μ½λνΈλ¦¬ λΈλ‘κ·Έ μ±λ¦°μ§ (0) | 2023.09.12 |
---|---|
[Swift] Escaping Closure (1) | 2023.05.20 |
[Swift] λ°±μ€ 10773λ² - μ λ‘ (1) | 2023.03.29 |
[Swift] λ°±μ€ 1406λ² - μλν° (0) | 2023.03.27 |
[Swift] λ°±μ€ 3273λ² - λ μμ ν© (0) | 2023.03.26 |