https://programmers.co.kr/learn/courses/30/lessons/17681
나의 풀이
import Foundation
func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
func makseBinary(_ array : [Int]) -> [String] {
var binary = [String]()
for i in array {
let binaryNum = String(i,radix: 2)
binary.append(binaryNum)
}
for i in 0..<binary.count {
if binary[i].count < n {
while binary[i].count != n {
let index = binary[i].index(binary[i].startIndex, offsetBy: 0)
binary[i].insert("0", at: index)
}
}
}
return binary
}
let binaryArr1 = makseBinary(arr1)
let binaryArr2 = makseBinary(arr2)
func makeMap(_ Array1 : [String], _ Array2 : [String]) -> [String] {
var map = [String]()
for i in 0..<Array1.count {
var answer = ""
let a1 = Array1[i].map {$0}
let a2 = Array2[i].map {$0}
for i in 0..<a1.count {
if a1[i] == a2[i] {
if a1[i] == "0" {
answer += " "
} else {
answer += "#"
}
} else {
answer += "#"
}
}
map.append(answer)
}
return map
}
return makeMap(binaryArr1, binaryArr2)
}
인상적인 풀이
func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
var answer: [String] = []
for i in 0..<n{
var data = UInt16(arr1[i]) | UInt16(arr2[i])
answer.append("")
for _ in 0..<n{
if data & 0b00000001 == 1{
answer[i] = "#" + answer[i]
}else{
answer[i] = " " + answer[i]
}
data = data >> 1
}
}
return answer
}
func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
return (0..<n).map { String(String(arr1[$0]|arr2[$0]|2<<(n - 1), radix: 2).map { $0 == "1" ? "#" : " " }[1...n]) }
}