[Algorithm] λλ¨Έμ§ ν μ (ternary(?:), XOR(^), map)
π₯ λ¬Έμ
μ§μ¬κ°νμ λ§λλ λ° νμν 4κ°μ μ μ€ 3κ°μ μ’νκ° μ£Όμ΄μ§ λ, λλ¨Έμ§ ν μ μ μ’νλ₯Ό ꡬνλ €κ³ ν©λλ€. μ 3κ°μ μ’νκ° λ€μ΄μλ λ°°μ΄ vκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ§μ¬κ°νμ λ§λλ λ° νμν λλ¨Έμ§ ν μ μ μ’νλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ. λ¨, μ§μ¬κ°νμ κ° λ³μ xμΆ, yμΆμ νννλ©°, λ°λμ μ§μ¬κ°νμ λ§λ€ μ μλ κ²½μ°λ§ μ λ ₯μΌλ‘ μ£Όμ΄μ§λλ€.
π€ νμ΄ λ°©λ²
[[1, 4], [3, 4], [3, 10], [1, 10]] -> 1, y : 2κ°, 3, y : 2κ°...
4κ°μ μ’νλ‘ μ§μ¬κ°νμ λ§λ€λ©΄ κ° μ μ μ΄λ£¨λ μ’νλ 2κ°μ© μ€λ³΅λλ€. μ΄λ₯Ό μ΄μ©νλ©΄ λ¬Έμ λ₯Ό κ°λ¨νκ² ν μ μλ€.
ifλ‘ κ΅¬ν
if v[0][0] == v[1][0] { ans[0] = v[2][0] }
- 첫 λ²μ§Έ μ κ³Ό λ λ²μ§Έ μ μ xμ’νκ° κ°μΌλ©΄ μΈ λ²μ§Έ μ μ xμ’νκ° λ΅μ΄ λλ€.
ternaryλ‘ κ΅¬ν
ifλ₯Ό μ΄μ©νμ¬ κ΅¬νν κ²μ ternaryλ‘ κ°λ¨νκ² κ΅¬νν μ μλ€.
a ? b : c
: aκ° μ°Έμ΄λ©΄ bλ₯Ό μ€ννκ³ κ±°μ§μ΄λ©΄ cλ₯Ό μ€ννλ€.
XOR μ¬μ©νμ¬ κ΅¬ν
ans[0] = ans[0]^arrayV.first!
ans[0]
μv
μ xμ’νλ₯Ό λ£κ³ μ΄λ₯Ό XORμ°μ°μ ν΄μ€λ€.
mapμΌλ‘ ꡬν
v.map{$0[0]}.reduce(0, ^)
- xμ’νμ 첫 λ²μ§Έ κ°μ λ½μ μ΄λ₯Ό ^(XOR) μ°μ°ν΄ μ€λ€.
π©π»π» Swift Code
ifλ‘ κ΅¬ν
import Foundation
func solution(_ v: [[Int]]) -> [Int]
{
var ans = [Int](repeating: 0, count: 2)
if v[0][0] == v[1][0] {
ans[0] = v[2][0]
} else if v[0][0] == v[2][0] {
ans[0] = v[1][0]
} else if v[1][0] == v[2][0] {
ans[0] = v[0][0]
}
if v[0][1] == v[1][1] {
ans[1] = v[2][1]
} else if v[0][1] == v[2][1] {
ans[1] = v[1][1]
} else if v[1][1] == v[2][1] {
ans[1] = v[0][1]
}
return ans
}
ternaryλ‘ κ΅¬ν
import Foundation
func solution(_ v: [[Int]]) -> [Int]
{
var ans = [Int](repeating: 0, count: 2)
ans[0] = v[0][0] == v[1][0] ? v[2][0] : (v[0][0] == v[2][0] ? v[1][0] : v[0][0])
ans[1] = v[0][1] == v[1][1] ? v[2][1] : (v[0][1] == v[2][1] ? v[1][1] : v[0][1])
return ans
}
xor μ¬μ©νμ¬ κ΅¬ν
import Foundation
func solution(_ v: [[Int]]) -> [Int]
{
var ans = [Int](repeating: 0, count: 2)
for arrayV in v {
ans[0] = ans[0]^arrayV.first!
ans[1] = ans[1]^arrayV.last!
}
return ans
}
mapμΌλ‘ ꡬν
import Foundation
func solution(_ v: [[Int]]) -> [Int]
{
var ans = [Int](repeating: 0, count: 2)
ans[0] = v.map{$0[0]}.reduce(0, ^)
ans[1] = v.map{$0[1]}.reduce(0, ^)
return ans
}
μκ³ λ¦¬μ¦ λ¬Έμ ν΄μ€ - λλ¨Έμ§ ν μ
νλ‘κ·Έλλ¨Έμ€μ λͺ¨μν μ€νΈλ νλ‘κ·Έλλ¨Έμ€μ μμ€ν μ μ΅μν΄μ§κΈ° μν ν μ€νΈμ΄λ©°, λ¬Έμ μ체λ 2018 1ST KAKAO BLIND RECRUITMENTμ μ ν κ΄κ³μμ΅λλ€. λ€λ§ λͺ¨μν μ€νΈμ νμ΄μ λν μμ²μ΄ μμ΄
programmers.co.kr