티스토리 뷰

programmers.co.kr/learn/courses/30/lessons/17681?language=swift

나의 풀이

import Foundation

func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
    var answer: [String] = []
    var newArr1 = arr1.map { String($0, radix: 2) }
    var newArr2 = arr2.map { String($0, radix: 2) }
    
    for i in 0..<n {
        
        while newArr1[i].count < n {
            newArr1[i] = "0" + newArr1[i]
        }
        
        while newArr2[i].count < n {
            newArr2[i] = "0" + newArr2[i]
        }
        
        var string: String = ""
        
        for j in 0..<n {
            
            if Array(newArr1[i])[j] == "0", Array(newArr2[i])[j] == "0" {
                string += " "
            } else {
                string += "#"
            }
            
        }
        answer.append(string)
    }
    
    return answer
}

 

다른 사람의 풀이

func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
    var answer: [String] = []

    for i in 0..<n {
        var bitwise = String(arr1[i] | arr2[i], radix: 2)
        bitwise = String(repeating: "0", count: n-bitwise.count) + bitwise
        answer += [bitwise.reduce("", { $0 + ($1 == "1" ? "#" : " ") })]
    }

    return answer
}

배울 점

1. 비트 연산자 "|" 를 사용해서 OR 논리연산

2. String에 repeating을 이용

댓글
공지사항