๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿž Daily Loaf/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์‹ค๋ฒ„5][Swift]๋ฐฑ์ค€2563๋ฒˆ

by BreadDev 2024. 10. 14.
728x90

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

 

๋‹ต์•ˆ์ฝ”๋“œ

import Foundation

let n = Int(readLine()!)!
var paper = [[Bool]](repeating: [Bool](repeating: false, count: 100), count: 100)

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

let blackArea = paper.flatMap { $0 }.filter { $0 }.count
print(blackArea)
  • n์„ ์ž…๋ ฅ๋ฐ›์•„ ์ƒ‰์ข…์ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • paper๋ผ๋Š” 100x100 ํฌ๊ธฐ์˜ 2์ฐจ์› ๋ถˆ๋ฆฌ์–ธ ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ๊ฐ’์€ ๋ชจ๋‘ false์ž…๋‹ˆ๋‹ค.
  • n๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ:
    • ์ƒ‰์ข…์ด์˜ ์™ผ์ชฝ ์•„๋ž˜ ๊ผญ์ง“์  ์ขŒํ‘œ (x, y)๋ฅผ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
    • (x, y)๋ถ€ํ„ฐ (x+9, y+9)๊นŒ์ง€์˜ ์˜์—ญ์„ true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์ข…์ ์œผ๋กœ paper ๋ฐฐ์—ด์—์„œ true์ธ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • flatMap { $0 }๋กœ 2์ฐจ์› ๋ฐฐ์—ด์„ 1์ฐจ์›์œผ๋กœ ํ‰ํƒ„ํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • filter { $0 }๋กœ true์ธ ์š”์†Œ๋งŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • count๋กœ ์„ ํƒ๋œ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์…‰๋‹ˆ๋‹ค.

๋ฌธ์ œ์˜ ์˜ˆ์‹œ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

3
3 7
15 7
5 2

์ด ์ž…๋ ฅ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

  1. ์ดˆ๊ธฐ ์„ค์ •:
    n = 3 paper = [[Bool]](repeating: [Bool](repeating: false, count: 100), count: 100)
    100x100 ํฌ๊ธฐ์˜ ๋ชจ๋“  ๊ฐ’์ด false์ธ 2์ฐจ์› ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  2. ์ฒซ ๋ฒˆ์งธ ์ƒ‰์ข…์ด (3, 7):
    for i in 3..<13 { for j in 7..<17 { paper[i][j] = true } }
    (3,7)๋ถ€ํ„ฐ (12,16)๊นŒ์ง€์˜ ์˜์—ญ์ด true๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
  3. ๋‘ ๋ฒˆ์งธ ์ƒ‰์ข…์ด (15, 7):
    for i in 15..<25 { for j in 7..<17 { paper[i][j] = true } }
    (15,7)๋ถ€ํ„ฐ (24,16)๊นŒ์ง€์˜ ์˜์—ญ์ด true๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
  4. ์„ธ ๋ฒˆ์งธ ์ƒ‰์ข…์ด (5, 2):
    for i in 5..<15 { for j in 2..<12 { paper[i][j] = true } }
    (5,2)๋ถ€ํ„ฐ (14,11)๊นŒ์ง€์˜ ์˜์—ญ์ด true๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
  5. ๊ฒฐ๊ณผ ๊ณ„์‚ฐ:
    let blackArea = paper.flatMap { $0 }.filter { $0 }.count
    ์ด ๋‹จ๊ณ„์—์„œ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์„ 1์ฐจ์›์œผ๋กœ ํ‰ํƒ„ํ™”ํ•˜๊ณ , true์ธ ์š”์†Œ๋งŒ ํ•„ํ„ฐ๋งํ•œ ํ›„ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด ์˜ˆ์‹œ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๊ฒน์น˜๋Š”๋ถ€๋ถ„์€ true๋กœ ์ „์ฒด ๊ฒ€์€ ์˜์—ญ์˜ ๋„“์ด๋ฅผ ๊ณ„์‚ฐํ• ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค