Swift Data Structure And Algorithm/Simulation
ํ์ ์๊ณ ๋ฆฌ์ฆ
youngjaeLee1026
2022. 4. 18. 20:16
1. ๋ฌธ์
2. ์ ์ถ๋ ฅ
3. ์ ์ถ๋ ฅ ์์
4. ๋ฌธ์ ์ค๊ณ
- d๊ฐ 1์ธ ๊ฒฝ์ฐ, ์ ๋ฐฉํฅ d๊ฐ 2์ธ ๊ฒฝ์ฐ ์ญ๋ฐฉํฅ์ผ๋ก ๋ฐฐ์ด์ ์์์ ๋ํด ์์น(index)๋ฅผ ํ์ ํด์ผ ํจ
- ์ฌ๊ธฐ์ x์ ์์น๋ฅผ 0๋ฒ ์ธ๋ฑ์ค์์ ์์ํด์ ๊ณ์ํด์ ํ์ ํ ๊ฒฐ๊ณผ์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ ๋ค์ ํ์ ์ ํด์ผ ํ๋ฏ๋ก,
- x์ ์์น๋ฅผ ๊ณ์ํด์ ๋ฐ๊ฟ์ค์ผ ํ๋ ์ ์ ์ ์ํด์ผ ํจ
- ๋, y์ ์ ๋ ฅ ๋ฒ์๊ฐ 100์ดํ ์ด๋ฏ๋ก n์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ค์ y์ ํ ๋นํ๊ฒ ๋๋ฉด ๋ฐ๋ณต๋๋ ์ฃผ๊ธฐ๋ฅผ ์์จ ์ ์์
- ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด์ ์ ๋ฐฉํฅ์ ๊ฒฝ์ฐ์๋ x + y๊ฐ n๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ ์ค๋ฅธ์ชฝ ๋์ ๋ฒ์ด๋๊ฒ ๋๋ฏ๋ก n์ ๋ค์ ๋นผ์ฃผ๊ณ , ์์ ๊ฒฝ์ฐ์๋ ๊ทธ ๋งํผ ํ์ ํ๋ฉด ๋๊ณ ,
- ์ญ๋ฐฉํฅ์ ๊ฒฝ์ฐ์๋ x - y ๊ฐ 0๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ผ์ชฝ ๋์ ๋ฒ์ด๋๊ฒ ๋๋ฏ๋ก n์ ๋ํด์ฃผ๊ณ , ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ทธ ๋งํผ ํ์ ํ๋ฉด ๋จ
- ๋ฐ๋ผ์ ๊ฐ q๊ฐ์ ์ง๋ฌธ์ ๋ํ ํ์ ์ O(1)์ ์๊ฐ๋ณต์ก๋๋ก ํด๊ฒฐํ ์ ์์
5. ์ ์ฒด ์ฝ๋
//MARK: - ํ์ ์๊ณ ๋ฆฌ์ฆ
//MARK: - Framework
import Foundation
//MARK: - Function
func solution() -> Void {
//MARK: - Input
guard let input: [String] = readLine()?.components(separatedBy: " ") else { return }
let n: Int = input.map { Int($0) }[0] ?? 0
let q: Int = input.map { Int($0) }[1] ?? 0
guard let inputA: [String] = readLine()?.components(separatedBy: " ") else { return }
let a: [Int] = inputA.map { Int($0) ?? 0 }
var x: Int = 0
var answer: String = ""
//MARK: - Process & Output
for _ in 0..<q {
guard let inputData: [String] = readLine()?.components(separatedBy: " ") else { return }
let d: Int = inputData.map { Int($0) }[0] ?? 0
var y: Int = inputData.map { Int($0) }[1] ?? 0
y = y >= n ? y % n : y
switch d {
case 1:
x = x + y >= n ? x + y - n : x + y
case 2:
x = x - y < 0 ? n + (x - y) : x - y
default:
break
}
answer += "\(a[x])\n"
}
print(answer)
}
solution()
์ ์ฒด์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.