개발/PS

[Swift] 프로그래머스 LV1 비밀지도

유훈 | Yuhun 2022. 3. 12. 19:53
반응형

String을 index로 접근하는 방법을 배울 수 있는 예제였습니다.
그건 그렇고 풀고나서 다른 사람들 풀이를 보니 정말 대단한 사람이 많습니다..

import Foundation

func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {
    var map1: [String] = []
    var map2: [String] = []
    
    map1 = decode(n, arr1)
    map2 = decode(n, arr2)
    
    return integrateMaps(map1, map2)
}

func decode(_ n:Int,_ arr:[Int]) -> [String]{ // 2진수로 만들기 -> 풀고 알았는데 radix를 쓰면 엄청 쉽다..
    var tempMap:[String] = []
    for i in 0...n-1 {
        var forDecode = arr[i]
        var temp : String = ""
        for _ in 0...n-1{
            if forDecode % 2 == 1 {
                temp = "#" + temp
            } else {
                temp = " " + temp
            }
            forDecode = forDecode / 2
        }
        tempMap.append(temp)
    }
    
    return tempMap
}

func integrateMaps(_ map1:[String], _ map2:[String]) -> [String] { // decode 한 것을 합치는 함수
    var integratedMap: [String] = []
    
    for i in 0...map1.count-1{
        var temp: String = ""
        for j in map1[i].indices{
            if map1[i][j] == "#" || map2[i][j] == "#" {
                temp += "#"
            } else {
                temp += " "
            }
        }
        integratedMap.append(temp)
    }
    
    return integratedMap
}

사실 함수로 안나누고 그냥 하는게 더 나을것 같지만 연습이라고 생각하고 나눠서 풀어봤습니다.

 

과정

-> 2진수로 바꾸기 -> 2진수에 따라 #으로 바꾸기 -> #으로 된 문자열을 합치기

 

반응형