[ νλ‘κ·Έλλ¨Έμ€ ] [1μ°¨] λ€νΈκ²μ
π μ½λ©ν μ€νΈ
βπ» Github
λ¬Έμ μ€λͺ
μΉ΄μΉ΄μ€ν‘μ λ¬ λ€ λ²μ§Έ λ³! μ¬μ¬ν λ? μΉ΄μΉ΄μ€ν‘ κ²μλ³~
μΉ΄μΉ΄μ€ν‘ κ²μλ³μ νλ°κΈ° μ κ· μλΉμ€λ‘ λ€νΈ κ²μμ μΆμνκΈ°λ‘ νλ€. λ€νΈ κ²μμ λ€νΈνμ λ€νΈλ₯Ό μΈ μ°¨λ‘ λμ Έ κ·Έ μ μμ ν©κ³λ‘ μ€λ ₯μ 겨루λ κ²μμΌλ‘, λͺ¨λκ° κ°λ¨ν μ¦κΈΈ μ μλ€.
κ° μ μ¬ν 무μ§λ μ½λ© μ€λ ₯μ μΈμ λ°μ κ²μμ ν΅μ¬ λΆλΆμΈ μ μ κ³μ° λ‘μ§μ λ§‘κ² λμλ€. λ€νΈ κ²μμ μ μ κ³μ° λ‘μ§μ μλμ κ°λ€.
- λ€νΈ κ²μμ μ΄ 3λ²μ κΈ°νλ‘ κ΅¬μ±λλ€.
- κ° κΈ°νλ§λ€ μ»μ μ μλ μ μλ 0μ μμ 10μ κΉμ§μ΄λ€.
- μ μμ ν¨κ» Single(S), Double(D), Triple(T) μμμ΄ μ‘΄μ¬νκ³ κ° μμ λΉμ²¨ μ μ μμμ 1μ κ³±, 2μ κ³±, 3μ κ³± (μ μ , μ μ , μ μ )μΌλ‘ κ³μ°λλ€.
- μ΅μ μΌλ‘ μ€νμ(*), μμ°¨μ(#)μ΄ μ‘΄μ¬νλ©° μ€νμ(*)λΉμ²¨ μ ν΄λΉ μ μμ λ°λ‘ μ μ μ»μ μ μλ₯Ό κ° 2λ°°λ‘ λ§λ λ€. μμ°¨μ(#) λΉμ²¨ μ ν΄λΉ μ μλ λ§μ΄λμ€λλ€.
- μ€νμ(*)μ 첫 λ²μ§Έ κΈ°νμμλ λμ¬ μ μλ€. μ΄ κ²½μ° μ²« λ²μ§Έ μ€νμ(*)μ μ μλ§ 2λ°°κ° λλ€. (μμ 4λ² μ°Έκ³ )
- μ€νμ(*)μ ν¨κ³Όλ λ€λ₯Έ μ€νμ(*)μ ν¨κ³Όμ μ€μ²©λ μ μλ€. μ΄ κ²½μ° μ€μ²©λ μ€νμ(*)μ μλ 4λ°°κ° λλ€. (μμ 4λ² μ°Έκ³ )
- μ€νμ(*)μ ν¨κ³Όλ μμ°¨μ(#)μ ν¨κ³Όμ μ€μ²©λ μ μλ€. μ΄ κ²½μ° μ€μ²©λ μμ°¨μ(#)μ μ μλ -2λ°°κ° λλ€. (μμ 5λ² μ°Έκ³ )
- Single(S), Double(D), Triple(T)μ μ μλ§λ€ νλμ© μ‘΄μ¬νλ€.
- μ€νμ(*), μμ°¨μ(#)μ μ μλ§λ€ λ μ€ νλλ§ μ‘΄μ¬ν μ μμΌλ©°, μ‘΄μ¬νμ§ μμ μλ μλ€.
0~10μ μ μμ λ¬Έμ S, D, T, *, #λ‘ κ΅¬μ±λ λ¬Έμμ΄μ΄ μ λ ₯λ μ μ΄μ μλ₯Ό λ°ννλ ν¨μλ₯Ό μμ±νλΌ.
μ λ ₯ νμ
"μ μ|보λμ€|[μ΅μ ]"μΌλ‘ μ΄λ£¨μ΄μ§ λ¬Έμμ΄ 3μΈνΈ.
μ) 1S2D*3T
- μ μλ 0μμ 10 μ¬μ΄μ μ μμ΄λ€.
- 보λμ€λ S, D, T μ€ νλμ΄λ€.
- μ΅μ μ *μ΄λ # μ€ νλμ΄λ©°, μμ μλ μλ€.
μΆλ ₯ νμ
3λ²μ κΈ°νμμ μ»μ μ μ ν©κ³μ ν΄λΉνλ μ μκ°μ μΆλ ₯νλ€.
μ) 37
μ μΆλ ₯ μμ
μμ | dartResult | answer | μ€λͺ |
1 | 1S2D*3T | 37 | 11 * 2 + 22 * 2 + 33 |
2 | 1D2S#10S | 9 | 12 + 21 * (-1) + 101 |
3 | 1D2S0T | 3 | 12 + 21 + 03 |
4 | 1S2T3S | 23 | 11 * 2 * 2 + 23 * 2 + 31 |
5 | 1D#2S*3S | 5 | 12 * (-1) * 2 + 21 * 2 + 31 |
6 | 1T2D3D# | -4 | 13 + 22 + 32 * (-1) |
7 | 1D2S3T* | 59 | 12 + 21 * 2 + 33 * 2 |
λ¬Έμ νμ΄
λμ νμ΄
func solution(_ dartResult:String) -> Int {
// μ μ λ€μ΄μ¨ μ«μ μ μ₯
var beforeNum = 0
// λ°©κΈ λ€μ΄μ¨ μ«μ μ μ₯
var nowNum = 0
// μ΄ ν©
var totalNum = 0
// μ μ λ€μ΄μ¨ μ«μλ₯Ό μ΄ν©μ μ μ₯νκΈ° μν΄ λ€μ΄μ¨ μ«μμ κ°μλ₯Ό ν€μλ¦Ό
var count = 0
var dartResult = Array(dartResult)
while !dartResult.isEmpty {
if let num = Int(String(dartResult.prefix(2))){
if count == 2 {
totalNum += beforeNum
}
beforeNum = nowNum
nowNum = num
count += 1
dartResult.removeFirst(2)
continue
}
if let num = Int(String(dartResult.first!)) {
if count == 2 {
totalNum += beforeNum
}
beforeNum = nowNum
nowNum = num
count += 1
dartResult.removeFirst()
continue
}
switch dartResult.first! {
case "D":
nowNum = nowNum * nowNum
case "T":
nowNum = nowNum * nowNum * nowNum
case "*":
nowNum = 2 * nowNum
beforeNum = 2 * beforeNum
case "#":
nowNum = -nowNum
default: //"S"
break
}
dartResult.removeFirst()
}
totalNum += beforeNum
totalNum += nowNum
return totalNum
}
μ°μ μ΄ λ¬Έμ λ₯Ό νκΈ° μν΄μλ λ¬Έμμ΄μ μ«μμ λ¬Έμλ‘ λλκ³ , λ¬Έμμ λ°λ₯Έ 쑰건μ λ£μ΄μΌκ² λ€λ μκ°μ΄ λ€μλ€.
νμ§λ§ λ¬Έμμ μ€νμ(*)μ΄ μμ κ³Ό κ·Έ μ μ λμλ κ²μ κ°μ 2λ°°λ‘ λ³κ²½ν΄μ£Όμ΄μΌ ν΄μ μ μ λμλ κ°μ μ μ₯ν λ³μκ° νμνλ€.
→ μ΄μ μ κ°
→ νμ¬μ κ°
→ λͺ λ²μ§Έ μ«μμΈμ§ μΉ΄μ΄νΈ
→ μ 체 ν©
κ·Έλμ μ΄λ κ² λ³μλ₯Ό λ§λ€μ΄λκ³ , if let λ¬ΈμΌλ‘ μ«μμΈμ§λ₯Ό νμ ν ν μ«μκ° μλλΌλ©΄ switch λ¬Έμ λλλ‘ κ΅¬ννμλ€. countκ° 2κ° λλ©΄ 3λ²μ§Έμ κ°μ΄ μ μ₯λμ΄μΌ νλ―λ‘ μ²«λ²μ§Έκ°μ΄ totalλ‘ μ μ₯μ΄ λκ³ , λ°°μ΄μ΄ λλλ©΄ λ€ λνκΈ°λ‘ κ΅¬ννμλ€. μ¬κΈ°μ λμ λ¬Έμ μ μ 10μ΄ λ€μ΄μμ λλ₯Ό ν΄κ²°νμ§ λͺ»νλ€. κ·Έλμ λ΄κ° μκ°ν λ°©λ²μ λ¨Όμ μμ 2 κΈμλ₯Ό κΊΌλ΄μ΄ if let λ¬Έμ λμ ν΄λ³΄κ³ λμ μ΄ λλ€λ©΄ κ·Έ μ«μλ 10μ΄λ―λ‘ λ€μμΌλ‘ λμ΄κ°λλ‘ κ΅¬νμ νμλ€.
νμ΄λ₯Ό μ λ€λ³΄λ 3κ°μ§μ λ°°μ΄μ κ°μ μ μ₯μ ν΄μ λ§μ§λ§μ λ°°μ΄μ μλ μλ₯Ό λνλ©΄ μ’κ² λ€λ μκ°μ΄ λ€μλ€.
func solution(_ dartResult:String) -> Int {
// λ¬Έμμ΄ λ°°μ΄λ‘ λ³ν
var dartResult = Array(dartResult)
// λ°©κΈ λ€μ΄μ¨ μ«μ μ μ₯
var nowNum = 0
// μ«μ μ μ₯
var num = [Int]()
while !dartResult.isEmpty {
if dartResult.first!.isNumber {
num.append(nowNum)
if let num = Int(String(dartResult.prefix(2))){
nowNum = num
dartResult.removeFirst(2)
continue
}
if let num = Int(String(dartResult.first!)) {
nowNum = num
dartResult.removeFirst()
continue
}
}
switch dartResult.first! {
case "D":
nowNum = nowNum * nowNum
case "T":
nowNum = nowNum * nowNum * nowNum
case "*":
var n = num.count
num[n-1] *= 2
nowNum = 2 * nowNum
case "#":
nowNum = -nowNum
default: //"S"
break
}
dartResult.removeFirst()
}
num.append(nowNum)
return num.reduce(0, +)
}
μ΄μ°¨νΌ μ«μκ° λ± 3κ°κ° λ€μ΄μ€λ 맨 μμλ νμ 0μ λ°°μΉνκ³ μμλλ‘ μ²«λ²μ§Έ, λλ²μ§Έ, μΈλ²μ§Έλ₯Ό λ£λλ‘νμ¬ 4κ°μ λ°°μ΄μ λ§λ€μλ€. 첫λ²μ§Έμλ 무쑰건 0μ λ°°μΉν μ΄μ λ μ€νμμ΄ λ€μ΄μμ κ²½μ°μ μμ κ³Ό κ·Έ μμ λ°°μ΄μ΄ 2λ°°κ° λλλ° μ²«λ²μ§Έ λ°°μ΄μ μ μΌ μ²μμΌλ‘ λ°°μΉνμ λ μλ¬κ° λ λ€λ₯Έ μ‘°κ±΄μ΄ νμνλ€. μ΄λ₯Ό μλ΅νκΈ° μν΄ μ²«λ²μ§Έμ 0μ λ°°μΉνμκ³ , μΉ΄μ΄ν°λ₯Ό λ°λ‘ μΈμ§ μμμ μ½λκ° λ κ°κ²°ν΄μ‘λ€. isNumberλΌλ λ³μ 쑰건문λ μΆκ°νμ¬ νμμλ 쑰건 λΉκ΅ κ³Όμ μ μλ΅νλ€.
μμ μ½λμ μκ°μ λΉκ΅ν΄λ³΄μ.
1λ² μ½λ
ν
μ€νΈ 1 γ ν΅κ³Ό (0.08ms, 16.4MB)
ν
μ€νΈ 2 γ ν΅κ³Ό (0.09ms, 16.2MB)
ν
μ€νΈ 3 γ ν΅κ³Ό (0.10ms, 16.5MB)
ν
μ€νΈ 4 γ ν΅κ³Ό (0.08ms, 16.2MB)
ν
μ€νΈ 5 γ ν΅κ³Ό (0.12ms, 16.5MB)
ν
μ€νΈ 6 γ ν΅κ³Ό (0.09ms, 16.3MB)
ν
μ€νΈ 7 γ ν΅κ³Ό (0.09ms, 16.3MB)
ν
μ€νΈ 8 γ ν΅κ³Ό (0.09ms, 16.3MB)
ν
μ€νΈ 9 γ ν΅κ³Ό (0.08ms, 16.5MB)
ν
μ€νΈ 10 γ ν΅κ³Ό (0.14ms, 16.4MB)
ν
μ€νΈ 11 γ ν΅κ³Ό (0.09ms, 16.3MB)
ν
μ€νΈ 12 γ ν΅κ³Ό (0.08ms, 16.4MB)
ν
μ€νΈ 13 γ ν΅κ³Ό (0.09ms, 16.3MB)
ν
μ€νΈ 14 γ ν΅κ³Ό (0.09ms, 16.2MB)
ν
μ€νΈ 15 γ ν΅κ³Ό (0.14ms, 16.2MB)
ν
μ€νΈ 16 γ ν΅κ³Ό (0.12ms, 16.5MB)
ν
μ€νΈ 17 γ ν΅κ³Ό (0.09ms, 16.3MB)
ν
μ€νΈ 18 γ ν΅κ³Ό (0.14ms, 16.6MB)
ν
μ€νΈ 19 γ ν΅κ³Ό (0.13ms, 16.5MB)
ν
μ€νΈ 20 γ ν΅κ³Ό (0.15ms, 16.3MB)
ν
μ€νΈ 21 γ ν΅κ³Ό (0.15ms, 16.6MB)
ν
μ€νΈ 22 γ ν΅κ³Ό (0.11ms, 16.4MB)
ν
μ€νΈ 23 γ ν΅κ³Ό (0.13ms, 16.3MB)
ν
μ€νΈ 24 γ ν΅κ³Ό (0.09ms, 16.2MB)
ν
μ€νΈ 25 γ ν΅κ³Ό (0.14ms, 16.2MB)
ν
μ€νΈ 26 γ ν΅κ³Ό (0.14ms, 16.4MB)
ν
μ€νΈ 27 γ ν΅κ³Ό (0.11ms, 16.6MB)
ν
μ€νΈ 28 γ ν΅κ³Ό (0.14ms, 16.4MB)
ν
μ€νΈ 29 γ ν΅κ³Ό (0.15ms, 16.1MB)
ν
μ€νΈ 30 γ ν΅κ³Ό (0.09ms, 16.4MB)
ν
μ€νΈ 31 γ ν΅κ³Ό (0.10ms, 16.4MB)
ν
μ€νΈ 32 γ ν΅κ³Ό (0.10ms, 16.6MB)
2λ² μ½λ
ν
μ€νΈ 1 γ ν΅κ³Ό (0.13ms, 16.8MB)
ν
μ€νΈ 2 γ ν΅κ³Ό (0.13ms, 16.5MB)
ν
μ€νΈ 3 γ ν΅κ³Ό (0.13ms, 16.5MB)
ν
μ€νΈ 4 γ ν΅κ³Ό (0.14ms, 16.7MB)
ν
μ€νΈ 5 γ ν΅κ³Ό (0.11ms, 16.6MB)
ν
μ€νΈ 6 γ ν΅κ³Ό (0.13ms, 16.6MB)
ν
μ€νΈ 7 γ ν΅κ³Ό (0.12ms, 16.6MB)
ν
μ€νΈ 8 γ ν΅κ³Ό (0.12ms, 16.6MB)
ν
μ€νΈ 9 γ ν΅κ³Ό (0.14ms, 16.8MB)
ν
μ€νΈ 10 γ ν΅κ³Ό (0.12ms, 16.7MB)
ν
μ€νΈ 11 γ ν΅κ³Ό (0.14ms, 16.8MB)
ν
μ€νΈ 12 γ ν΅κ³Ό (0.13ms, 16.6MB)
ν
μ€νΈ 13 γ ν΅κ³Ό (0.11ms, 16.5MB)
ν
μ€νΈ 14 γ ν΅κ³Ό (0.14ms, 16.8MB)
ν
μ€νΈ 15 γ ν΅κ³Ό (0.13ms, 16.3MB)
ν
μ€νΈ 16 γ ν΅κ³Ό (0.13ms, 16.5MB)
ν
μ€νΈ 17 γ ν΅κ³Ό (0.17ms, 16.6MB)
ν
μ€νΈ 18 γ ν΅κ³Ό (0.14ms, 16.6MB)
ν
μ€νΈ 19 γ ν΅κ³Ό (0.12ms, 16.6MB)
ν
μ€νΈ 20 γ ν΅κ³Ό (0.13ms, 16.6MB)
ν
μ€νΈ 21 γ ν΅κ³Ό (0.13ms, 16.5MB)
ν
μ€νΈ 22 γ ν΅κ³Ό (0.23ms, 16.8MB)
ν
μ€νΈ 23 γ ν΅κ³Ό (0.18ms, 16.7MB)
ν
μ€νΈ 24 γ ν΅κ³Ό (0.16ms, 16.4MB)
ν
μ€νΈ 25 γ ν΅κ³Ό (0.13ms, 16.6MB)
ν
μ€νΈ 26 γ ν΅κ³Ό (0.20ms, 16.5MB)
ν
μ€νΈ 27 γ ν΅κ³Ό (0.22ms, 16.5MB)
ν
μ€νΈ 28 γ ν΅κ³Ό (0.14ms, 16.5MB)
ν
μ€νΈ 29 γ ν΅κ³Ό (0.18ms, 16.6MB)
ν
μ€νΈ 30 γ ν΅κ³Ό (0.20ms, 16.8MB)
ν
μ€νΈ 31 γ ν΅κ³Ό (0.14ms, 16.8MB)
ν
μ€νΈ 32 γ ν΅κ³Ό (0.14ms, 16.8MB)
μ½λλ κΉλν΄μ‘μ§λ§ μ€νλ € 1λ²μ½λμ μ€νμκ°μ΄ λ μ§§μλ€.
μ΄μ λ λ°°μ΄μ λ§λ¬μΌλ‘μ¨ μ΄ν©μ λ³μμ λνλ©΄μ μ μ₯νλ κ²μ΄ μλ 4κ°μ λ°°μ΄μ νμΌλ©΄μ λν΄μΌνλ reduce μ½λκ° μΆκ° λμκΈ° λλ¬ΈμΈ κ² κ°λ€.