[프로그래머스] [1차]비밀지도 - Swift

이창형·2023년 2월 26일
0

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/17681

코드

import Foundation

func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
    var answer: [String] = []
    // 비트 연산 (or)을 활용해 계산을 하고 기록해 놓을 배열
    var sum = [String]()
    
    for i in 0..<arr1.count {
    	// or연산을 한후 2진수로 바꾼다
        var num = String(arr1[i] | arr2[i] , radix: 2)
        // 만약 연산한 길이가 주어진 n의 길이보다 짧으면 n의 길이랑 같아지게 앞에 0을 추가한다
        if num.count < n {
            for _ in 1...n - num.count {
                num = "0" + num
            }
        }
        sum.append(num)
    }
    
    // 1은 #으로 0은 공백으로 변환하여 answer에 저장
    for i in sum {
        var word = ""
        for j in i {
            if j == "1" {
                word += "#"
            } else {
                word += " "
            }
        }
        answer.append(word)
    }
    return answer
}

회고

  • 가장 간단한 실전 코딩테스트 문제였지만 아직 부족한지 많이 어려웠다
  • 비트 연산자를 생각하지 못해서 어려웠던 것 같다
profile
iOS Developer

0개의 댓글