μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 그리λ μκ³ λ¦¬μ¦
- λ¬Έμμ΄
- λ°±νΈλνΉ
- SwiftUI
- dp
- ios
- μ ν΄λ¦¬λ νΈμ λ²
- λΈλ£¨νΈν¬μ€
- μ€ν
- λμ ν©
- λΆν μ 볡
- νλ‘κ·Έλλ¨Έμ€
- WebView
- λΉνΈμ°μ°μ
- λ°±μ€
- λΆν μ 볡
- μ½λ©ν μ€νΈ
- λΆν νμ
- λΈλ£¨νΈν¬μ€ μκ³ λ¦¬μ¦
- μ΄μ§νμ
- BFS
- WebApp
- dfs
- μμ
- Queue
- μκ³ λ¦¬μ¦
- μ½ν
- Swift
- Today
- Total
MUKER_DEV with iOS
[swift] νλ‘κ·Έλλ¨Έμ€ - ν€ν¨λ λλ₯΄κΈ° λ³Έλ¬Έ
[swift] νλ‘κ·Έλλ¨Έμ€ - ν€ν¨λ λλ₯΄κΈ°
MUKER 2023. 1. 19. 14:09νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ 맀μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
λ¬Έμ νΈλ λ° μμ΄ λμμ΄ λλλ‘ λμ νμ΄μ κ°μ λ νμ΄λ₯Ό μ¬λ¦½λλ€.
λν νμ΄ ν λ€λ₯Έ μ¬λμ νμ΄λ₯Ό λ³΄κ³ μ°Έκ³ ν λ§ν νμ΄λ μ¬λ¦½λλ€.
- λ¬Έμ μ λ°λΌ λμ νμ΄λ§ μμ μ μμ΅λλ€.
- ν΄λΉ νμ΄λ€μ νμ΄ μ€ νλμΌ λΏ μ΅μ μ νμ΄λ μλ μ μμ΅λλ€.
λμ νμ΄
import Foundation
func solution(_ numbers:[Int], _ hand:String) -> String {
var result = [String]()
var state = [0,0]
var lastLeft = 1
var lastRight = 1
var center = ["0":0, "8":1, "5":2, "2":3]
func calculate(num: String) {
var left = abs(center[num]! - state[0]) + lastLeft
var right = abs(center[num]! - state[1]) + lastRight
if num == "0" {
if left < right { result.append("L"); state[0] = 0; lastLeft = 0; return }
if left > right { result.append("R"); state[1] = 0; lastRight = 0; return }
if hand == "left" { result.append("L"); state[0] = 0; lastLeft = 0; return }
else { result.append("R"); state[1] = 0; lastRight = 0; return }
}
if num == "8" {
if left < right { result.append("L"); state[0] = 1; lastLeft = 0; return }
if left > right { result.append("R"); state[1] = 1; lastRight = 0; return }
if hand == "left" { result.append("L"); state[0] = 1; lastLeft = 0; return }
else { result.append("R"); state[1] = 1; lastRight = 0; return }
}
if num == "5" {
if left < right { result.append("L"); state[0] = 2; lastLeft = 0; return }
if left > right { result.append("R"); state[1] = 2; lastRight = 0; return }
if hand == "left" { result.append("L"); state[0] = 2; lastLeft = 0; return }
else { result.append("R"); state[1] = 2; lastRight = 0; return }
}
if num == "2" {
if left < right { result.append("L"); state[0] = 3; lastLeft = 0; return }
if left > right { result.append("R"); state[1] = 3; lastRight = 0; return }
if hand == "left" { result.append("L"); state[0] = 3; lastLeft = 0; return }
else { result.append("R"); state[1] = 3; lastRight = 0; return }
}
}
numbers.forEach { i in
var num = String(i)
switch num {
case "7": result.append("L"); state[0] = 1; lastLeft = 1
case "4": result.append("L"); state[0] = 2; lastLeft = 1
case "1": result.append("L"); state[0] = 3; lastLeft = 1
case "9": result.append("R"); state[1] = 1; lastRight = 1
case "6": result.append("R"); state[1] = 2; lastRight = 1
case "3": result.append("R"); state[1] = 3; lastRight = 1
case "0": calculate(num: num)
case "8": calculate(num: num)
case "5": calculate(num: num)
case "2": calculate(num: num)
default :
break
}
}
return result.joined()
}
* ν΄λΉ νμ΄λ λΉμΆμ²μ λλ€. μ°Έκ³ ν λ§ν νμ΄λ₯Ό μ°ΎμΌμ λ€λ©΄ λ°μ μ½λλ₯Ό μ°Έκ³ νμΈμ.
μ«μ 1,4,7μ 무쑰건 "L"μ return
μ«μ 3,6,9λ 무쑰건 "R"μ return
νκ² λλ€.
μ€μν건
μ«μ 0,2,5,8μ μ²λ¦¬νλ건λ°
λ μκ°λ½ μ€ λ§μ§λ§ μμΉκ° μ«μμ κ°κΉμ°λ©΄
κ°κΉμ΄ μκ°λ½μ΄ μ«μλ₯Ό λλ₯΄κ² ν΄μ€μΌνλ€.
λͺ κ°μ§ λ³μλ₯Ό μ§μ ν΄μ€¬λλ°
state[0] μλ μΌμͺ½ μκ°λ½μ μΈ΅μ (7μ΄λ©΄ 1μΈ΅, 4λ©΄ 2μΈ΅, 1μ΄λ©΄ 3μΈ΅)
λ§μ°¬κ°μ§λ‘
state[1] μλ μ€λ₯Έμͺ½ μκ°λ½μ μΈ΅μ μ μ₯νκ² λλ€.
lastLeftμ lastRightλ
1μΌ λλ μΌμͺ½μ΄λ, μ€λ₯Έμͺ½μ λ§μ§λ§ μκ°λ½μ΄ μμλκ±°κ³
0μΌ λλ μκ°λ½μ΄ κ°μ΄λ° μμλ μ 보λ₯Ό μ μ₯ν΄λ¨λ€.
λ§μ½ κ°μ΄λ° λ²νΈλ₯Ό λλ₯Ό λ
λ§μ§λ§ μκ°λ½ μμΉκ° κ°μ΄λ°μλ€λ©΄
1λ§νΌμ μμ§μμ μ΅μννκΈ° λλ¬Έμ
κ·Έ κ°μ μ μ©νκΈ° μν΄μλ€.
κΉλν μ½λκ° μλμ΄μ μ§κ΄μ μ΄μ§ μμ§λ§
λλ¦ μνμ’μ° μμΉλ₯Ό ꡬν μ μκ² λλ€.
μ«μλ§μ ν΄λΉ μμΉ μ‘°κ±΄μ λ°μ Έ
λ΅μ ꡬν μ μκ² λλ€.
λ€μ λ§νμ§λ§
μ’μμ½λλ μλλΌ
μ°Έκ³ νμλ건 λΉμΆμ λλ€.
μ°Έκ³ ν λ§ν νμ΄
import Foundation
func solution(_ numbers:[Int], _ hand:String) -> String {
var result:String = ""
let dic:[Int:[Int]] = [
1:[0,0],
2:[0,1],
3:[0,2],
4:[1,0],
5:[1,1],
6:[1,2],
7:[2,0],
8:[2,1],
9:[2,2],
0:[3,1],
]
var lastL:[Int] = [3,0]
var lastR:[Int] = [3,2]
for number in numbers {
if number == 1 || number == 4 || number == 7 {
lastL = dic[number]!
result += "L"
} else if number == 3 || number == 6 || number == 9 {
lastR = dic[number]!
result += "R"
} else {
var sizeL = abs(lastL[0]-dic[number]![0])+abs(lastL[1]-dic[number]![1])
var sizeR = abs(lastR[0]-dic[number]![0])+abs(lastR[1]-dic[number]![1])
if sizeL < sizeR || (sizeL == sizeR && hand == "left") {
lastL = dic[number]!
result += "L"
} else {
lastR = dic[number]!
result += "R"
}
}
}
return result
}
μκ³ λ¦¬μ¦μ κ°λ€κ³ ν μ μμ§λ§
ν¨μ¬ κΉλνκ² μ§ μ½λμ λλ€.
μ«μμ μμΉμ 보λ₯Ό λμ λ리λ‘, κ°μλ μ’νλ°°μ΄μ λ£μμ΅λλ€.
0,2,5,8μ μ²λ¦¬νλ λΆλΆλ§
νλ² μκ°ν΄λ³΄λ©΄μ 보μλ©΄ λ κ±°κ°μ΅λλ€.
'π€ μκ³ λ¦¬μ¦ > programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[swift] νλ‘κ·Έλλ¨Έμ€ - κΈ°μ¬λ¨μμ 무기 (0) | 2023.01.25 |
---|---|
[swift] νλ‘κ·Έλλ¨Έμ€ - ν¬λ μΈ μΈνλ½κΈ° κ²μ (0) | 2023.01.20 |
[swift] νλ‘κ·Έλλ¨Έμ€ - [1μ°¨] λ€νΈ κ²μ (0) | 2023.01.18 |
[swift] νλ‘κ·Έλλ¨Έμ€ - νΈλ νμ΄νΈ λν (0) | 2023.01.17 |
[swift] νλ‘κ·Έλλ¨Έμ€ - ν¬κΈ°κ° μμ λΆλΆλ¬Έμμ΄ (0) | 2023.01.13 |