2022. 10. 27. 10:11ใAlgorithm
๋ฐฑ์ค - ํ๋ ฌ(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/1080
๋์ ํ์ด
๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ๋ฐฉ๋ฒ์ด ๋ ์ค๋ฅด์ง์์์ ๋ค๋ฅธ์ฌ๋์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ๋ค.
์ด ๋ฌธ์ ๋ 0,0๋ถํฐ ๋๊น์ง ํ์ํ๋ฉด์ targetํ๋ ฌ๊ณผ ์์๊ฐ์ด ๋ค๋ฅด๋ค๋ฉด 3x3๋งํผ์ ๋ค์ง์ด์ฃผ๋ ๊ฒ์ ๋ฐ๋ณตํ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ (x, y)ํ๋ ฌ์ด ์์๋ y-3์์ y-1๊น์ง ํ๋ฒ์ ํ์ํ๊ณ y-2์์๋ ์ธ๋ฑ์ค๊ฐ ์ด๊ณผ๋๊ธฐ ๋๋ฌธ์ ํ์ธํ์ง ์์์ y-3์ผ๋ y-2์ y-1์ ๊ฐ์ ํ์ธํด์ผ ํ๋ค. ์ด๋ targetํ๋ ฌ์ ์์๊ฐ๊ณผ ๋ค๋ฅด๋ค๋ฉด returnํด์ฃผ๋ฉด ๋๋ค.
import Foundation
let input = readLine()!.components(separatedBy: " ").map{Int($0)!}
let row = input[0], col = input[1]
var originBoard = [[Int]](repeating: [], count: row)
var targetBoard = [[Int]](repeating: [], count: row)
var count = 0
for i in 0..<input[0] * 2 {
let row = readLine()!
if i < input[0] {
for c in row {
originBoard[i].append(Int(String(c))!)
}
} else {
for c in row {
targetBoard[i-input[0]].append(Int(String(c))!)
}
}
}
func reverseBoard(_ board: inout [[Int]], _ row: Int, _ col: Int) {
for r in row..<row+3 {
for c in col..<col+3 {
board[r][c] = board[r][c] == 0 ? 1 : 0
}
}
}
func changeBoard() {
// ํ, ์ด์ ๊ฐ์ด 3๋ณด๋ค ์๋ค๋ฉด ๋ฆฌํด
if input[0] < 3 || input[1] < 3 { return }
for r in 0..<input[0]-2 {
for c in 0..<input[1]-2 {
if originBoard[r][c] != targetBoard[r][c] {
reverseBoard(&originBoard, r, c)
count += 1
}
if c == input[1]-3 {
for i in input[1]-3..<input[1] {
if originBoard[r][i] != targetBoard[r][i] { return }
}
}
}
}
}
func main() {
changeBoard()
if originBoard == targetBoard {
print(count)
} else {
print(-1)
}
}
main()
ํผ๋๋ฐฑ
2์ฐจ์๋ฐฐ์ด์ ๋ฐ์๋ ๋น ๊ฐ์ ์์ฑํ๊ณ appendํด์ ๋ฐ์๋๋ฐ ๊ณ์ ๋ฐํ์์๋ฌ๊ฐ ๋์๋ค.. ์ผ๋จ์ ์ ํ์ด์ฒ๋ผ ๋ฐ์ ReadLine์ ๋ํด์ for๋ฌธ์ ๋๋ฉด์ i์ธ๋ฑ์ค๋ก ์ฝ์ ์ ํด์ผ๊ฒ ๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ๊ฐ์์ค ๋ฐฐ์ (Swift) (0) | 2022.10.28 |
---|---|
๋ฐฑ์ค - ์ ์ธ(Swift) (1) | 2022.10.27 |
๋ฐฑ์ค - ์๋ฆฌ๊ณต ํญ์น(Swift) (0) | 2022.10.26 |
๋ฐฑ์ค - ๋ฌธ์ ๊ฒ์(Swift) (0) | 2022.10.26 |
๋ฐฑ์ค - ์ ๋ฌถ๊ธฐ(Swift) (0) | 2022.10.25 |