๐ ๋ฌธ์
๐ญ ์๊ฐ์ ํ๋ฆ
๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ CircularQueue ๋ฅผ ์ ๊ณตํ๊ฑฐ๋
์ด๋ฏธ ๊ตฌํํด๋์ ์ฝ๋๊ฐ ์๋ค๋ฉด CircularQueue ์์์ iterator๋ฅผ ์ฐ๋ฉด ์ข๊ฒ ๋ค๊ณ ์๊ฐ์ ํ์ง๋ง
java, kotlin ์์ CircularQueue๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฏ๋ก
๊ทธ๋ฅ ์ฌ์ด์ฆ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋์ด๊ฐ๋ ์์ ์๋ mod(%) ์ฐ์ฐ์ผ๋ก index๋ฅผ ์กฐ์ ํ๋ ๋ฐฉ์์ ํํ๋ค.
์ถ๋ ฅ ๊ฒฐ๊ณผ์ '<' ๊บพ์์ ',' ์ฝค๋ง๋ฅผ ๋ฃ์ด์ค์ผํด์ StringBuilder ๋ฅผ ์ฌ์ฉํ๋ค.
"ํน์ ์ธ๋ฑ์ค์ ์์๋ฅผ ์ญ์ ํ ์ดํ์ ์ธ๋ฑ์ค๋ฅผ -1 ํด์ ์กฐ์ ํด์ผํ๋ค."
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ํ๋ผ๋ฉด
index | 0 | 1 | 2 | 3 |
value | 1 | 2 | 3 | 4 |
'3'๋ฒ์งธ ๋ฅผ ์ง์ด๋ค๋๊ฑด index '2'์ ํด๋นํ๋ ์์ 3์ ์ง์ฐ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
์ง์ฐ๊ณ ๋์์ queue ์ํ๋ ๋ค์๊ณผ ๊ฐ์์ง๋ค.
index | 0 | 1 | 2 |
value | 1 | 2 | 4 |
index '2'์ ํด๋นํ๋ ์์๋ฅผ ์ง์ ๋ค๋ฉด ํ์ฌ index๊ฐ 1์ ๊ฐ๋ฆฌํค๋๋ก ํ์ฌ ๋ค์ loop์ ์์์ ๋ง๊ฒ ๋์ํ๊ฒ ํด์ผํ๋ค.
๐ ํ์ด (Kotlin)
fun main() {
val stringBuilder = StringBuilder()
val (number , sequenceNumber) = readLine()!!.split(" ").map { it.toInt() }
val numberQueue = LinkedList<Int>(Array<Int>(number){it+1}.toList())
var index : Int = -1
while (numberQueue.isNotEmpty()) {
index = (index + sequenceNumber) % numberQueue.size
stringBuilder.append(numberQueue.removeAt(index--)).append(", ")
}
with(stringBuilder) {
// ๋งจ ๋์ ์ฝค๋ง, ๊ณต๋ฐฑ์ ์ญ์ ํจ
this.deleteCharAt(this.length - 1)
this.deleteCharAt(this.length - 1)
this.insert(0, '<')
this.insert(this.length, '>')
}
println(stringBuilder.toString())
}
'Algorithm > Algorithm (๋ฌธ์ ํ์ด)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11779 ์ต์๋น์ฉ ๊ตฌํ๊ธฐ 2 (0) | 2022.09.23 |
---|---|
[LeetCode] Same Tree (0) | 2022.09.05 |
[Geeks for Geeks] Insert a node in a BST (0) | 2021.02.23 |
[๋ฐฑ์ค 11651] ์ขํ ์ ๋ ฌํ๊ธฐ 2 (0) | 2021.02.21 |
[Geeks for Geeks] Validate an IP Address (0) | 2021.02.20 |