새소식

인기 검색어

프로그래머스/Lv.2

[Swift] 행렬 테두리 회전하기

  • -
import Foundation

func solution(_ rows:Int, _ columns:Int, _ queries:[[Int]]) -> [Int] {
    // rows * columns 생셩
    var array: [[Int]] = []
    var result: [Int] = []
    
    for i in 0..<rows {
        var tmp: [Int] = []
        for j in 1...columns {
            tmp.append(i * columns + j)
        }
        array.append(tmp)
    }
    
    
    for query in queries {
        let x1 = query[0] - 1, y1 = query[1] - 1
        let x2 = query[2] - 1, y2 = query[3] - 1
        var row = x1, col = y1
        var min = array[row][col]
        var queue: [Int] = [min]
        
        // left
        while col < y2 {
            min = array[row][col] < min ? array[row][col] : min
            queue.append(array[row][col])
            array[row][col] = queue.removeFirst()
            col += 1
        }
        
        // down
        while row < x2 {
            min = array[row][col] < min ? array[row][col] : min
            queue.append(array[row][col])
            array[row][col] = queue.removeFirst()
            row += 1
        }
        
        // right
        while y1 < col {
            min = array[row][col] < min ? array[row][col] : min
            queue.append(array[row][col])
            array[row][col] = queue.removeFirst()
            col -= 1
        }
        
        // up
        while x1 < row {
            min = array[row][col] < min ? array[row][col] : min
            queue.append(array[row][col])
            array[row][col] = queue.removeFirst()
            row -= 1
        }
        
        array[row][col] = queue.removeFirst()
        result.append(min)
    }
    
    return result
}

 

'프로그래머스 > Lv.2' 카테고리의 다른 글

[Swift] 가장 큰 정사각형 찾기  (0) 2023.06.17
[Swift] 배달  (0) 2023.06.17
[Swift] 수식 최대화  (0) 2023.06.17
[Swift] 무인도 여행  (0) 2023.06.17
[Swift] 괄호 변환  (0) 2023.06.17
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.