본문 바로가기
Algorithm/문제풀이_백준

[Swift][구현] 백준 16967번 (배열 복원하기)

by Joahnee 2022. 5. 14.

요구능력

구현

 

문제풀이

 

문제의 조건에 힌트를 모두 주었다.

두 배열중 하나에 포함된다는건 B는 필수적으로 A배열을 포함하고 있기 때문에 B만갖고있는것을 말한다.

가장 중요한건 빼기할때 절댓값이다..

for i in 0..<h+x{
    for j in 0..<w+y{
        if bArr[i][j] == 0 {continue} //둘다포함x
        if i < h && j < w {// 두 배열 모두에 포함되면
            aArr[i][j] = bArr[i][j]
            if i - x >= 0 && j - y >= 0{ //
                aArr[i][j] = abs(aArr[i - x][j - y] - bArr[i][j])
            }
        }else{//b에만 포함되면
            aArr[i - x][j - y] = bArr[i][j]

        }
    }
}

 

후기

절댓값때메 몇번을 다시했는지..

 

코드

let hwxy = readLine()!.split(separator: " ").map{Int(String($0))!}
let h = hwxy[0]
let w = hwxy[1]
let x = hwxy[2]
let y = hwxy[3]
var bArr = [[Int]]()
for _ in 0..<h+x{
    bArr.append(readLine()!.split(separator: " ").map{Int(String($0))!})
}
var aArr = Array(repeating: Array(repeating: 0, count: w), count: h)
for i in 0..<h+x{
    for j in 0..<w+y{
        if bArr[i][j] == 0 {continue} //둘다포함x
        if i < h && j < w {// 두 배열 모두에 포함되면
            aArr[i][j] = bArr[i][j]
            if i - x >= 0 && j - y >= 0{ //
                aArr[i][j] = abs(aArr[i - x][j - y] - bArr[i][j])
            }
        }else{//b에만 포함되면
            aArr[i - x][j - y] = bArr[i][j]

        }
    }
}
for i in aArr{
    for j in i{
        print(j, terminator: " ")
    }
    print()
}

댓글