2022. 11. 28. 10:45ใAlgorithm
๋ฐฑ์ค - ๋๋๊ณค ์ปค๋ธ(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/15685
๋์ ํ์ด
์ฒ์ ๋ฌธ์ ๋ฅผ ๋ดค์๋๋ ์ ์ดํดํ์ง ๋ชปํ๋ค.
์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ ๋ํด ์๊ณ๋ฐฉํฅ์ผ๋ก ์ ํํ๋ฉด ์๋์ชฝ ๋ฐฉํฅ์ด ๋๊ณ ๊ทธ๊ฒ์ ๋ ์ ์ ๋ถ์ด๋ฉด ์๋์ ๊ฐ๋ ๊ฒ ์๋๊ฐ? ์๊ฐ์ด ๋ค์๋๋ฐ
๊ทธ๋ฅ ํ์ฌ์ ๋๋๊ณค ์ปค๋ธ๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก 90๋ ๋๋ฆฌ๋ ๊ฒ๋ง ์ง์คํ๋ฉด ๋๋ ๊ฒ์ด์๋ค.
๊ทธ๋์ 1์ธ๋, 2์ธ๋, 3์ธ๋๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด์ ๊ท์น์ ์ฐพ์๋๋ฐ ์๋ก๊ฐ๋ ์ ๋ถ์ ์ผ์ชฝ์ผ๋ก, ์ผ์ชฝ์ผ๋ก ๊ฐ๋ ์ ๋ถ์ ์๋๋ก, ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ๋ ์ ๋ถ์ ์๋ก ๊ฐ๋ ๊ท์น์ ์ฐพ์๋ค.
์ด๋ ๋ฌธ์ ์์ 0๋ฒ๋ถํฐ 3๋ฒ๊น์ง์ ๋ฐฉํฅ์ ์ธ๊ธํ ๊ฒ๊ณผ ๋์ผํ๋ค.
๊ทธ๋์ ์คํ์ ๋จผ์ ํ์ฌ์ ์ธ๋๋ฅผ ๋ฃ์ ํ ๋ง์ง๋ง ์ ๋ถ๋ถํฐ ๋นผ๋ฉด์ ๊ทธ ์ ๋ถ์ด ๊ฐ๋ฅดํค๋ ๋ฐฉํฅ์ ํ ๋๋ก 1์ฆ๊ฐํ ํ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ๋ฐ๋ณตํด์ ๋ฌธ์ ๋ฅผ ํ์๋ค.
import Foundation
let N = Int(readLine()!)!
var arr = [[Int]]()
var visited = Array(repeating: Array(repeating: false, count: 101), count: 101)
let dx = [0, -1, 0, 1]
let dy = [1, 0, -1, 0]
var result = 0
for _ in 0..<N {
arr.append(readLine()!.components(separatedBy:" ").map{Int($0)!})
}
for element in arr {
let x = element[1] // x์ขํ
let y = element[0] // y์ขํ
let d = element[2] // ๋ฐฉํฅ
let g = element[3] // ์ธ๋
visited[x][y] = true
var stack = [Int]()
var nx = x + dx[d]
var ny = y + dy[d]
visited[nx][ny] = true
stack.append(d)
for _ in 0..<g { // ์ธ๋๋งํผ ์งํ
for j in stride(from: stack.count-1, through: 0, by: -1) {
var k = stack[j] + 1
if k == 4 { k = 0 }
nx = nx + dx[k]
ny = ny + dy[k]
visited[nx][ny] = true
stack.append(k)
}
}
}
for i in 0..<100 {
for j in 0..<100 {
if visited[i][j], visited[i+1][j], visited[i][j+1], visited[i+1][j+1] {
result += 1
}
}
}
print(result)
ํผ๋๋ฐฑ
๋ฌธ์ ๋ฅผ ํ ๋ ๋๋๊ณค์ปค๋ธ๋ค์ ์ด๋ป๊ฒ 90๋ํ์ ์์ผ์ ์ ์ฉ์ํค๋ ๊ฐ์ ๋ํด์ ๊ณ ๋ฏผ์ ํ์๋๋ฐ ํต์งธ๋ก ํ์ ์ํ๋ ๊ฒ์ด ์๋ ๊ฐ ์์น์์ ๋ง์ง๋ง ์ ๋ถ์ ๊ธฐ์ค์ผ๋ก ์ด๋ํ๋ ๊ท์น์ด ์์๋ค. ๊ท์น์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฅ๋ ฅ์ด ํ์ํ๋ค.
์์ง ๋ฐฉํฅ์ ์์ ์์ฌ๋ก ์ ํ์ํค๋ฉด์ ์ฝ๋์์ฑํ๋ ๊ฒ์ ์ํฐ ๊ฒ ๊ฐ๋ค. dx, dy๋ณ์๋ก ๋๊ณ ๋ฐฉํฅ์ด ๋์ด๊ฐ์๋๋ 0์ผ๋ก ๋๋ฉด์ ๋ฐฉํฅ์ ์ต์ํด์ ธ์ผํ๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ์๊ธฐ ์์ด(Swift) (0) | 2022.11.30 |
---|---|
๋ฐฑ์ค - ๊ฐ์(Swift) (0) | 2022.11.29 |
๋ฐฑ์ค - ๋ฏธ์ธ๋จผ์ง ์๋ !(Swift) (0) | 2022.11.23 |
๋ฐฑ์ค - ์น์ฆ(Swift) (0) | 2022.11.22 |
๋ฐฑ์ค - ํฑ๋๋ฐํด 2(Swift) (0) | 2022.11.21 |