๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1935
ํ์ ํ๊ธฐ์์ ๊ณ์ฐํ๋ ๊ฐ๋ ์ ๋ํด์ ์ ์์ง ๋ชปํ์ฌ ์ธํฐ๋ท์ ์ฐพ์๋ณด๊ณ , ํ์ํ๊ธฐ์์ด ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ณ์ฐ๋๋์ง ๋จผ์ ์ดํด๋ณด์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก stack ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๋ค๋ ์ ์ด ํน์ง์ด์๋ค. ์ปดํจํฐ๋ ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ค์ํ๊ธฐ์ (1+2=3) ๋ณด๋ค ํ์ํ๊ธฐ์์ด ๋ ์ดํด๊ฐ ์ฌ์ด์ง ์ ์ ์๊ฒ ๋์๋ค.๊ณ์ํด์ ๊ฒฐ๊ด๊ฐ์ stack์ ์ ์ฅํด์ฃผ๊ธฐ ๋๋ฌธ์ด ์๋๊น.
๋ด๊ฐ ํด๋น ๋ฌธ์ ๋ฅผ ํ์ดํ๊ธฐ ์ํด ์ฐธ๊ณ ํ ํ์ํ๊ธฐ์ ๊ฐ๋ ๊ธ์ ์๋์ ๊ฐ๋ค.
https://todaycode.tistory.com/73?category=997273
์ ๊ธ์ ์ฐธ๊ณ ํ์ฌ ๋ฐฑ์ค 1935๋ฒ์ ์์ ์ ๋ ฅ 1๋ฒ์ ํ์ด๋ณด๋ฉด ์๋์ ๊ฐ๋ค!
๋ด๊ฐ ํผ ํ์ด
- ์ ๋ ฅ๋ฐ๋ nums ์ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก 1,2,3,4 ..... ๊ฐ ์ฐจ๋ก๋ก ๋ค์ด์จ๋ค๊ณ ๋ง ์๊ฐํ์ฌ ๋ง์ง๋ง์ ์์คํค์ฝ๋๋ก ๋ณ๊ฒฝํ์ฌ 64๋ฅผ ๋บ ์๋ฅผ stack์ ๋ฃ์ด์ฃผ์๋ค. ๋น์ฐํ ์ค๋ฅ์๋ค. ์ฌ์ฉ์๊ฐ 1.2.3.4.5 ๋ฅผ ๋ฃ์ง ์๊ณ 2,45,677, .. ์ด๋ ๊ฒ ๋ฌด์์๋ก ๋ฃ์ ์๋ ์๋ค๋ ์ฌ์ค์ ๊นจ๋ซ๊ณ ์ ๋ ฅ๋ฐ์๋์ nums์ ์ธ๋ฑ์ค์ ์ ๊ทผํ์ฌ ๊ฐ์ stack์ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค.
- ๋๋จธ์ง ์ฐ์ฐ๋ค์ ๊ตฌํํ๊ธฐ ์ฌ์ ๋ค.
- ๋จ ์์์ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ฆฐ ์คํ์ ๋ณด๋ฉด, - ์ / ๋ ์์๊ฐ ์ค์ํ๋ค. (์ฌ๊ธฐ์๋ ํค๋งธ๋ค.)
- 2์ 3์ ๊ณฑํ ๋ ๋จผ์ ๊บผ๋ธ 3์๋ค๊ฐ 2๋ฅผ ๊ณฑํ๋๊ฒ ์๋๋ผ, ๋ค๋ฆ๊ฒ๊บผ๋ธ 2์๋ค๊ฐ 3์ ๊ณฑํ๋ค.
- ๋ท๋ถ๋ถ์ 4์ 5๋ฅผ ๊บผ๋ด์ด ๋๋๋๋, 5๋ฅผ ๋จผ์ ๊บผ๋ด์ด 5์๋ค๊ฐ 4๋ฅผ ๋๋๋๊ฒ์ด ์๋๋ผ, ๋์ค์๊บผ๋ธ 4์๋ค๊ฐ ๋จผ์ ๊บผ๋ธ 5๋ฅผ ๋๋ด๋ค. ์ด์ฒ๋ผ ์์๊ฐ ์ค์ํ๋ค.
- ํ์ง๋ง ๋ง์ ๊ณผ ๊ณฑ์ ์ ์์๊ฐ ์๋ฏธ๊ฐ ์๊ธฐ์, ๋๋์ ๊ณผ ๋บ์ ์๋ง ์์๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํด ๋ณ๋์ ์์๋ฅผ ์ ์ธํ ํ, ๊ณ์ฐ์ ์คํํ๋ค.
import Foundation
let n = Int(readLine()!)!
var orderLine = readLine()!
var nums: [Double] = []
var stack: [Double] = []
for _ in 0..<n {
let num = Double(readLine()!)!
nums.append(num)
}
for order in orderLine {
if order == "+" {
stack.append(stack.removeLast()+stack.removeLast())
} else if order == "-" {
let a = stack.removeLast()
stack.append(stack.removeLast() - a)
} else if order == "*" {
stack.append(stack.removeLast() * stack.removeLast())
} else if order == "/" {
let b = stack.removeLast()
stack.append(stack.removeLast() / b)
} else {
let idx = order.asciiValue! - 65
stack.append(nums[Int(idx)])
}
}
print(String(format: "%.2f", stack[0]))
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] (Swift) 10808๋ฒ - ์ํ๋ฒณ ๊ฐ์ (0) | 2022.02.13 |
---|---|
[๋ฐฑ์ค] (Swift) 1918๋ฒ - ํ์ํ๊ธฐ์ (0) | 2022.02.13 |
[๋ฐฑ์ค] (Swift) 17413๋ฒ - ๋จ์ด๋ค์ง๊ธฐ2 (0) | 2022.02.07 |
[๋ฐฑ์ค] (Swift) 10866๋ฒ - ๋ฑ(deque) (0) | 2022.02.06 |
[๋ฐฑ์ค] (Swift) 1158๋ฒ - ์์ธํธ์ค ๋ฌธ์ (0) | 2022.02.05 |