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
์ด ์ ๋ ฅ์ผ๋ก ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ์ด๊ธฐ ์ค์ :
n = 3 paper = [[Bool]](repeating: [Bool](repeating: false, count: 100), count: 100)
- ์ฒซ ๋ฒ์งธ ์์ข
์ด (3, 7):
for i in 3..<13 { for j in 7..<17 { paper[i][j] = true } }
- ๋ ๋ฒ์งธ ์์ข
์ด (15, 7):
for i in 15..<25 { for j in 7..<17 { paper[i][j] = true } }
- ์ธ ๋ฒ์งธ ์์ข
์ด (5, 2):
for i in 5..<15 { for j in 2..<12 { paper[i][j] = true } }
- ๊ฒฐ๊ณผ ๊ณ์ฐ:
let blackArea = paper.flatMap { $0 }.filter { $0 }.count
์ด ์์์ฝ๋๋ฅผ ํตํด ๊ฒน์น๋๋ถ๋ถ์ true๋ก ์ ์ฒด ๊ฒ์ ์์ญ์ ๋์ด๋ฅผ ๊ณ์ฐํ ์์์ต๋๋ค
'๐ Daily Loaf > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ธ๋ก ์ฆ1][Swift]๋ฐฑ์ค1546๋ฒ(map/reduce) (1) | 2024.10.07 |
---|---|
[๋ธ๋ก ์ฆ2][Swift]๋ฐฑ์ค10811๋ฒ(reverse) (1) | 2024.10.07 |
[๋ธ๋ก ์ฆ2][Swift]๋ฐฑ์ค3052๋ฒ(Set) (0) | 2024.10.07 |
[๋ธ๋ก ์ฆ3][Swift]๋ฐฑ์ค5597(๋ฐฐ์ด) (1) | 2024.10.07 |
[๋ธ๋ก ์ฆ2][Swift]๋ฐฑ์ค10813 (1) | 2024.10.07 |
[๋ธ๋ก ์ฆ3][Swift]๋ฐฑ์ค10810(Array) (0) | 2024.10.05 |
[๋ธ๋ก ์ฆ5][Swift]๋ฐฑ์ค10951(while/EOF) (1) | 2024.10.04 |
[๋ธ๋ก ์ฆ5][Swift]๋ฐฑ์ค10952(while) (0) | 2024.10.04 |