본문 바로가기
코딩테스트/문제풀이-2

[선택] 2563 색종이 [이차원 리스트]

by apple망고 2024. 1. 31.

정답 코드

var board = [[Int]](repeating: [Int](repeating: 0, count: 100), count: 100)

for _ in 0..<Int(readLine()!)! {
    let coordinates = readLine()!.split(separator: " ").map( { Int($0)! })
    let x = coordinates[0]
    let y = coordinates[1]
    
    for i in x..<x + 10 {
        for j in y..<y + 10 {
            board[i][j] = 1
        }
    }
}

let ans = board.flatMap( { $0 }).reduce(0, +)
print(ans)

 

코드 설명

  • 빈 공간이 모두 0 으로 초기화된 board를 만든다.
  • 사각형의 공간들에 1을 채웁니다. 중복된 영역도 1로 추가됩니다.
  • 2차원 board를 flatMap으로 1차원을 만들고 reduce함수로 board 내부에 값을 모두 더해줍니다.

https://www.acmicpc.net/problem/2563

 

2563번: 색종이

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록

www.acmicpc.net