π μ½λ©ν
μ€νΈ
μ½λ©ν
μ€νΈ λ¬Έμ νμ΄
βπ» Github
λ¬Έμ νμ΄ github λ§ν¬
λ¬Έμ μ€λͺ
μ€λ§νΈν° μ ν ν€ν¨λμ κ° μΉΈμ λ€μκ³Ό κ°μ΄ μ«μλ€μ΄ μ ν μμ΅λλ€.
μ΄ μ ν ν€ν¨λμμ μΌμκ³Ό μ€λ₯Έμμ μμ§μκ°λ½λ§μ μ΄μ©ν΄μ μ«μλ§μ μ
λ ₯νλ €κ³ ν©λλ€.
맨 μ²μ μΌμ μμ§μκ°λ½μ * ν€ν¨λμ μ€λ₯Έμ μμ§μκ°λ½μ # ν€ν¨λ μμΉμμ μμνλ©°, μμ§μκ°λ½μ μ¬μ©νλ κ·μΉμ λ€μκ³Ό κ°μ΅λλ€.
- μμ§μκ°λ½μ μνμ’μ° 4κ°μ§ λ°©ν₯μΌλ‘λ§ μ΄λν μ μμΌλ©° ν€ν¨λ μ΄λ ν μΉΈμ κ±°λ¦¬λ‘ 1μ ν΄λΉν©λλ€.
- μΌμͺ½ μ΄μ 3κ°μ μ«μ 1, 4, 7μ μ λ ₯ν λλ μΌμ μμ§μκ°λ½μ μ¬μ©ν©λλ€.
- μ€λ₯Έμͺ½ μ΄μ 3κ°μ μ«μ 3, 6, 9λ₯Ό μ λ ₯ν λλ μ€λ₯Έμ μμ§μκ°λ½μ μ¬μ©ν©λλ€.
- κ°μ΄λ° μ΄μ 4κ°μ μ«μ 2, 5, 8, 0μ μ λ ₯ν λλ λ μμ§μκ°λ½μ νμ¬ ν€ν¨λμ μμΉμμ λ κ°κΉμ΄ μμ§μκ°λ½μ μ¬μ©ν©λλ€.4-1. λ§μ½ λ μμ§μκ°λ½μ κ±°λ¦¬κ° κ°λ€λ©΄, μ€λ₯Έμμ‘μ΄λ μ€λ₯Έμ μμ§μκ°λ½, μΌμμ‘μ΄λ μΌμ μμ§μκ°λ½μ μ¬μ©ν©λλ€.
μμλλ‘ λλ₯Ό λ²νΈκ° λ΄κΈ΄ λ°°μ΄ numbers, μΌμμ‘μ΄μΈμ§ μ€λ₯Έμμ‘μ΄μΈ μ§λ₯Ό λνλ΄λ λ¬Έμμ΄ handκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, κ° λ²νΈλ₯Ό λλ₯Έ μμ§μκ°λ½μ΄ μΌμμΈ μ§ μ€λ₯ΈμμΈ μ§λ₯Ό λνλ΄λ μ°μλ λ¬Έμμ΄ ννλ‘ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
[μ νμ¬ν]
- numbers λ°°μ΄μ ν¬κΈ°λ 1 μ΄μ 1,000 μ΄νμ λλ€.
- numbers λ°°μ΄ μμμ κ°μ 0 μ΄μ 9 μ΄νμΈ μ μμ λλ€.
- handλ "left" λλ "right" μ
λλ€.
- "left"λ μΌμμ‘μ΄, "right"λ μ€λ₯Έμμ‘μ΄λ₯Ό μλ―Έν©λλ€.
- μΌμ μμ§μκ°λ½μ μ¬μ©ν κ²½μ°λ L, μ€λ₯Έμ μμ§μκ°λ½μ μ¬μ©ν κ²½μ°λ Rμ μμλλ‘ μ΄μ΄λΆμ¬ λ¬Έμμ΄ ννλ‘ return ν΄μ£ΌμΈμ.
μ μΆλ ₯ μ
numbers | hand | result |
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] | "right" | "LRLLLRLLRRL" |
[7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] | "left" | "LRLLRRLLLRR" |
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0] | "right" | "LLRLLRLLRL" |
μ μΆλ ₯ μμ λν μ€λͺ
μ
μΆλ ₯ μ #1
μμλλ‘ λλ¬μΌ ν λ²νΈκ° [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5]μ΄κ³ , μ€λ₯Έμμ‘μ΄μ
λλ€.
μΌμ μμΉ | μ€λ₯Έμ μμΉ | λλ¬μΌ ν μ«μ | μ¬μ©ν μ | μ€λͺ |
* | # | 1 | L | 1μ μΌμμΌλ‘ λλ¦ λλ€. |
1 | # | 3 | R | 3μ μ€λ₯ΈμμΌλ‘ λλ¦ λλ€. |
1 | 3 | 4 | L | 4λ μΌμμΌλ‘ λλ¦ λλ€. |
4 | 3 | 5 | L | μΌμ 거리λ 1, μ€λ₯Έμ 거리λ 2μ΄λ―λ‘ μΌμμΌλ‘ 5λ₯Ό λλ¦ λλ€. |
5 | 3 | 8 | L | μΌμ 거리λ 1, μ€λ₯Έμ 거리λ 3μ΄λ―λ‘ μΌμμΌλ‘ 8μ λλ¦ λλ€. |
8 | 3 | 2 | R | μΌμ 거리λ 2, μ€λ₯Έμ 거리λ 1μ΄λ―λ‘ μ€λ₯ΈμμΌλ‘ 2λ₯Ό λλ¦ λλ€. |
8 | 2 | 1 | L | 1μ μΌμμΌλ‘ λλ¦ λλ€. |
1 | 2 | 4 | L | 4λ μΌμμΌλ‘ λλ¦ λλ€. |
4 | 2 | 5 | R | μΌμ 거리μ μ€λ₯Έμ κ±°λ¦¬κ° 1λ‘ κ°μΌλ―λ‘, μ€λ₯ΈμμΌλ‘ 5λ₯Ό λλ¦ λλ€. |
4 | 5 | 9 | R | 9λ μ€λ₯ΈμμΌλ‘ λλ¦ λλ€. |
4 | 9 | 5 | L | μΌμ 거리λ 1, μ€λ₯Έμ 거리λ 2μ΄λ―λ‘ μΌμμΌλ‘ 5λ₯Ό λλ¦ λλ€. |
5 | 9 | - | - | λ°λΌμ "LRLLLRLLRRL"λ₯Ό return ν©λλ€. |
λ°λΌμ "LRLLLRLLRRL"λ₯Ό return ν©λλ€.
μ
μΆλ ₯ μ #2
μΌμμ‘μ΄κ° [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2]λ₯Ό μμλλ‘ λλ₯΄λ©΄ μ¬μ©ν μμ "LRLLRRLLLRR"μ΄ λ©λλ€.
μ
μΆλ ₯ μ #3
μ€λ₯Έμμ‘μ΄κ° [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]λ₯Ό μμλλ‘ λλ₯΄λ©΄ μ¬μ©ν μμ "LLRLLRLLRL"μ΄ λ©λλ€.
λ¬Έμ νμ΄
λμ νμ΄
import CoreFoundation
func solution(_ numbers:[Int], _ hand:String) -> String {
// μ«μμ λ°λ₯Έ ν€ν¨λ μμΉ
let keypadLocation = [[1,0],[0,3],[1,3],[2,3],[0,2],[1,2],[2,2],[0,1],[1,1],[2,1]]
// μΌμͺ½ μκ°λ½μ νμ¬ μμΉ
var currentPositionL = [0,0]
// μ€λ₯Έμͺ½ μκ°λ½μ νμ¬ μμΉ
var currentPositionR = [2,0]
return numbers.map{ number -> String in
if [1,4,7].contains(number) {
currentPositionL = keypadLocation[number]
return "L"
}else if [3,6,9].contains(number){
currentPositionR = keypadLocation[number]
return "R"
}else {
let intervalL = (0...1).map{ abs(currentPositionL[$0] - keypadLocation[number][$0]) }.reduce(0,+)
let intervalR = (0...1).map{ abs(currentPositionR[$0] - keypadLocation[number][$0]) }.reduce(0,+)
if intervalL > intervalR || ( intervalL == intervalR && hand == "right" ) {
currentPositionR = keypadLocation[number]
return "R"
}else {
currentPositionL = keypadLocation[number]
return "L"
}
}
}.joined()
}
μ΄λ² λ¬Έμ λ μ λ§ λ΄κ° μκ°ν΄λ μ νμλ€κ³ μκ°νλ€.
λ΄κ° μ΄ λ¬Έμ μ μ΄λ€μμΌλ‘ μ κ·Όνλμ§ μκ°ν΄λ³΄μ. μ²μμ var move = [[1,0],[-1,0],[0,1],[0,-1]] μνμ’μ°λ₯Ό μ΄λνλ ν¨μλ₯Ό λ§λ€μ΄ ν€ν¨λμμ μΌμκ³Ό μ€λ₯Έμμ μ§μ μμ§μ¬ 거리λ₯Ό μ¬λ €κ³ νλ€. κ·ΈλΌ λͺ©μ μ§λ‘ κ°κ³ μ νλ ν€ν¨λμ μ’νλ₯Ό μμμΌνλ€. "*"μ ( 0,0 ) μ΄λΌλ μ’ννλ©΄μΌλ‘ λκ³ μ«μ λμ μ μ’νκ°μ λ£μλΌκ³ μκ°μ΄ λ€μκ³ , λ§μΉ¨ μ«μλ 0λΆν° 9κΉμ§λ‘ μμ΄μ ν΄λΉ ν€ν¨λ λ²νΈμ λ§λλ‘ λ°°μ΄ μμλλ‘ λμ
νλ©΄, ν€ν¨λ λ²νΈμ λ°°μ΄μ μΈλ±μ€ κ°μ΄ μΌμΉνκΈ° λλ¬Έμ κ°μ κΊΌλ΄μ€κΈ°κ° μμνλ€.
" 1, 4, 7"κ³Ό " 3, 6, 9"μ ν΄λΉνλ μ«μκ° λμ€λ©΄ Lλ R μ ν΄λΉ μ«μμ μ’νκ°μ λμ
ν΄μ£Όκ³ , κ·Έ μ΄μΈμ μ«μκ° λμ€λ©΄ νμ¬μ μμΉμ λͺ©ννλ ν€ν¨λμ μ«μμ μ’νκ°μ λΉκ΅νμ¬ λ μμ κ°μ΄ λμ€λ μκ°λ½μ΄ μ΄λνλ©΄ λμλ€.
ν€ν¨λμ μ«μμ μ’νμ νμ¬ μμΉμ μ’νμ κ°μ λΉκ΅νλ κ³Όμ μμ κ΅³μ΄ moveλ₯Ό μ¬μ©νμ§ μκ³ λ°°μ΄μ μλΌλ¦¬ κ°μ λΉΌμ£Όμ΄ μ λκ°μ μμ°λ©΄ κ°λ¨νκ² κ΅¬ν μ μμ κ±°λΌκ³ μκ°μ΄ λ€μλ€. μΆκ°λ‘ reduce ν¨μλ₯Ό μ¬μ©ν΄ κ°νΈνκ² μ«μλ₯Ό κ³μ°νκ³ μΆμ΄μ mapμΌλ‘ ꡬννμλ€.
μ 체μ μΈ ν€ν¨λμ νλ¦μ mapμΌλ‘ λμ
νμ¬ “R” λλ “L”λ§ μΆλ ₯νλ€λ©΄ String λ°°μ΄μ joined ν΄μ λ°λ‘ λ΅μ ꡬν μ μμ κ±°λΌκ³ νμ νλλ°, μ²μμ map μμ if λ¬Έμ΄ λ€μ΄κ°μ§ μμλ€. κ·Έλμ μΈν°λ·μ μ°Ύμ보λ map μμ if λ¬Έμ μ°κΈ° μν΄μλ ν΄λ‘μ ν¨μλ₯Ό μ¬μ©ν΄ μΆλ ₯κ°μ μ§μ ν΄μ£Όμ΄μΌ νλ€.
κ·Έλ κ² λ¬Έμ λ₯Ό νμλλ° μμ 3λ¬Έμ μ€ 2λ¬Έμ λ₯Ό νλ Έλ€. λ‘μ§μμλ νλ¦° λΆλΆμ΄ μλ€λ νμ μ νκ³ λ¬Έμ μ νλ¦μ λ°λΌκ°λ©° μ€λ₯λ₯Ό νμ
νλ€. λ¬Έμ λ λ΄κ° μ«μ ν€ν¨λμ μ’νλ₯Ό μλͺ» μ
λ ₯ν κ² 9μ 0μ μ’νκ°μ λ°λλ‘ λμ
νμλ€. κ·Έλμ λ€μ νΌ κ²°κ³Ό μ λ΅!
μ€μν κ°λ
- μ λκ° : abs()
- κ³ μ°¨ν¨μμ ifλ¬Έμ λ£κΈ° μν΄μ μΆλ ₯κ° μ§μ μ΄ νμ!