2022. 11. 21. 14:53ใAlgorithm
๋ฐฑ์ค - ํฑ๋๋ฐํด 2(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/15662
๋์ ํ์ด
๋ณดํต ๋ฌธ์ ๊ฐ ๊ต์ฅํ ๊ธธ๋ฉด์ ์ ๋ ฅ๊ฐ์ด 1000์ดํ๋ผ๋ฉด ๊ตฌํ๋ฌธ์ ๋ค.
์ด ๋ฌธ์ ์ ํด๊ฒฐ์ ์ ํฑ๋๋ฐํด๊ฐ ๋ง๋ฌผ๋ฆฌ๋ ํ์ด๋ฐ์ด๋ค. ํฑ๋๋ฐํด๊ฐ ๋ง๋ฌผ๋ฆฌ๋ ๊ณต๊ฐ์ ์ธ๋ฑ์ค2์ 6์ด๋ค.
์์๋ก 4๊ฐ์ ํฑ๋๋ฐํด๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
2๋ฒ ํฑ๋๋ฐํด๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ฆด๋ ์์ชฝ์ ํฑ๋๋ฐํด๋ ๋ง๋ฌผ๋ฆฌ๋ ๋ถ๋ถ์ด ํ์ธํด์ผํ๋ค. ์ฆ 1๋ฒ์ 6๋ฒ์ธ๋ฑ์ค์ 3๋ฒ์ 2๋ฒ์ธ๋ฑ์ค๋ฅผ ํ์ธํด์ ์๋ก ๊ทน์ด ๋ค๋ฅด๋ค๋ฉด ์ฌ๊ท๋ฅผ ๋๊ณ ์๋๋ผ๋ฉด ๋๊ธฐ๋ฉด ๋๋ค.
ํ์ด๊ฐ ์กฐ๊ธ ์ค๋๊ฑธ๋ ธ๋ ์ด์ ๋ ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ ๋งจ๋ง์ง๋ง๊ฐ์ ์ฒซ๋ฒ์งธ์ ๋ฃ์ด์ผํ๋๋ฐ ์ด ๋ถ๋ถ์ ๋ฐ๋๋กํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฉ๋ฌธ์ฌ๋ถ๋ฅผ ์ฒดํฌํ ๋ ์ธ๋ฑ์ค๊ฐ ๋์ด๊ฐ์ํ์์ ๋ฐฐ์ด์ ์๋ธ์คํฌ๋ฆฝํ ํ๋ค๋ณด๋ ๋ฐํ์์๋ฌ๊ฐ ๋์์๋๋ฐ ๋ฐฉ๋ฌธํ์๋ฅผ ํ๊ธฐ์ ์ ์ซ์์ ์ ํจ์ฑ์ ๋จผ์ ์ฒดํฌํ๋ ํด๊ฒฐํ ์ ์์๋ค.
import Foundation
struct Wheel {
var wheel: [Int]
init(wheel: [Int]) {
self.wheel = wheel
}
}
let T = Int(readLine()!)!
var wheels = [Wheel]()
var visited = [Bool](repeating: false, count: T+1)
for i in 0..<T {
let wheel = Wheel(wheel: readLine()!.map{Int(String($0))!})
wheels.append(wheel)
}
let K = Int(readLine()!)!
for _ in 0..<K {
visited = [Bool](repeating: false, count: T+1)
let input = readLine()!.components(separatedBy:" ").map{Int($0)!}
let target = input[0], dir = input[1]
rotate(num: target, dir: dir)
}
var cnt = 0
wheels.forEach {
if $0.wheel[0] == 1 {
cnt += 1
}
}
print(cnt)
func rotate(num: Int, dir: Int) {
visited[num] = true
// 0๋ณด๋ค ํฌ๋ฉด์ ๋ฐฉ๋ฌธ๋์ง ์์์ ๋
if 0<num-1, !visited[num-1] {
// ๋ฐํด๊ฐ ๋ง๋ฌผ๋ฆด ๋
if wheels[num-2].wheel[2] != wheels[num-1].wheel[6] {
if dir == 1 { rotate(num: num-1, dir: -1)}
else { rotate(num: num-1, dir: 1)}
}
}
if num+1<T+1, !visited[num+1] {
if wheels[num].wheel[6] != wheels[num-1].wheel[2] {
if dir == 1 { rotate(num: num+1, dir: -1) }
else { rotate(num: num+1, dir: 1)}
}
}
if dir == 1 { // ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์
let tmp = wheels[num-1].wheel.removeLast()
wheels[num-1].wheel.insert(tmp, at: 0)
} else {
wheels[num-1].wheel.append(wheels[num-1].wheel.removeFirst())
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ๋ฏธ์ธ๋จผ์ง ์๋ !(Swift) (0) | 2022.11.23 |
---|---|
๋ฐฑ์ค - ์น์ฆ(Swift) (0) | 2022.11.22 |
๋ฐฑ์ค - ์ธ๊ตฌ์ด๋(Swift) (0) | 2022.11.21 |
๋ฐฑ์ค - ์นํจ๋ฐฐ๋ฌ(Swift) (0) | 2022.11.18 |
๋ฐฑ์ค - ํฑํํ (Swift) (0) | 2022.11.16 |