์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ์คํ
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ฝํ
- ๋ฐฑํธ๋ํน
- ๋ถํ ์ ๋ณต
- ํ๋ก๊ทธ๋๋จธ์ค
- ์์
- ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉํ ์คํธ
- ์๊ณ ๋ฆฌ์ฆ
- Queue
- BFS
- ๋ฌธ์์ด
- WebApp
- Swift
- dfs
- ๋ถํ ํ์
- SwiftUI
- ๋ถํ ์ ๋ณต
- ๋์ ํฉ
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
- ios
- ๋นํธ์ฐ์ฐ์
- WebView
- ๋ฐฑ์ค
- ์ด์งํ์
- ๋ธ๋ฃจํธํฌ์ค
- dp
- Today
- Total
MUKER_DEV with iOS
[swift] ๋ฐฑ์ค - 1021๋ฒ: ํ์ ํ๋ ํ ๋ณธ๋ฌธ
๋ฌธ์ ๋งํฌ
๋ฌธ์
์ง๋ฏผ์ด๋ N๊ฐ์ ์์๋ฅผ ํฌํจํ๊ณ ์๋ ์๋ฐฉํฅ ์ํ ํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ง๋ฏผ์ด๋ ์ด ํ์์ ๋ช ๊ฐ์ ์์๋ฅผ ๋ฝ์๋ด๋ ค๊ณ ํ๋ค.
์ง๋ฏผ์ด๋ ์ด ํ์์ ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ง ์ฐ์ฐ์ ์ํํ ์ ์๋ค.
- ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฝ์๋ธ๋ค. ์ด ์ฐ์ฐ์ ์ํํ๋ฉด, ์๋ ํ์ ์์๊ฐ a1, ..., ak์ด์๋ ๊ฒ์ด a2, ..., ak์ ๊ฐ์ด ๋๋ค.
- ์ผ์ชฝ์ผ๋ก ํ ์นธ ์ด๋์ํจ๋ค. ์ด ์ฐ์ฐ์ ์ํํ๋ฉด, a1, ..., ak๊ฐ a2, ..., ak, a1์ด ๋๋ค.
- ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋์ํจ๋ค. ์ด ์ฐ์ฐ์ ์ํํ๋ฉด, a1, ..., ak๊ฐ ak, a1, ..., ak-1์ด ๋๋ค.
ํ์ ์ฒ์์ ํฌํจ๋์ด ์๋ ์ N์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๋ฏผ์ด๊ฐ ๋ฝ์๋ด๋ ค๊ณ ํ๋ ์์์ ์์น๊ฐ ์ฃผ์ด์ง๋ค. (์ด ์์น๋ ๊ฐ์ฅ ์ฒ์ ํ์์์ ์์น์ด๋ค.) ์ด๋, ๊ทธ ์์๋ฅผ ์ฃผ์ด์ง ์์๋๋ก ๋ฝ์๋ด๋๋ฐ ๋๋ 2๋ฒ, 3๋ฒ ์ฐ์ฐ์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ์ ํฌ๊ธฐ N๊ณผ ๋ฝ์๋ด๋ ค๊ณ ํ๋ ์์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๊ณ , M์ N๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค์๋ ์ง๋ฏผ์ด๊ฐ ๋ฝ์๋ด๋ ค๊ณ ํ๋ ์์ ์์น๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์์น๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , N๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์ ์ ์ ๋ต์ ์ถ๋ ฅํ๋ค.
์์
์ฑ๊ณต ํ์ด
let I = readLine()!.split {$0==" "}.map {Int($0)!}, N = I[0]
let target = readLine()!.split {$0==" "}.map {Int($0)!}
var queue = Array(1...N)
var pointer = 0
var result = 0
for target in target {
if pointer > queue.count-1 { pointer = 0 }
if target == queue[pointer] {
queue.remove(at: pointer)
continue
}
var left = pointer
var right = pointer
var count = 0
while true {
left = left-1 < 0 ? queue.count-1 : left-1
right = right+1 > queue.count-1 ? 0 : right+1
count += 1
if queue[left] == target {
queue.remove(at: left)
pointer = left
} else if queue[right] == target {
queue.remove(at: right)
pointer = right
} else {
continue
}
result += count
break
}
}
print(result)
ํ์ด ํค์๋
- ํ์ฌ index๊ฐ ์์นํ๋ pointer๋ฅผ ๋์ด pointer๋ฅผ ๊ธฐ์ค์ผ๋ก index์ผ์ชฝ, index์ค๋ฅธ์ชฝ ์ผ๋ก ํ์์ ์ค์ํ๋ฉฐ ๋ ๊ฐ์ index์ค ํ๋๋ผ๋ index์ ๊ฐ๊ณผ target์ด ๊ฐ๋ค๋ฉด result๊ฐ์ ํ์๋ ํ์๋ฅผ ๋ํด์คฌ์ต๋๋ค.
- target๊ณผ ๊ฐ์๋ index๋ฅผ pointer์ ๋ฃ๊ณ ํด๋น index๋ queue์์ ์ญ์ ์์ผ์คฌ์ต๋๋ค.
'๐ค ์๊ณ ๋ฆฌ์ฆ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] ๋ฐฑ์ค - 1308๋ฒ: D-Day (0) | 2023.08.17 |
---|---|
[swift] ๋ฐฑ์ค - 1010๋ฒ: ๋ค๋ฆฌ ๋๊ธฐ (0) | 2023.08.16 |
[swift] ๋ฐฑ์ค - 1050๋ฒ: ์ซ์ ์ ์ฌ๊ฐํ (0) | 2023.08.10 |
[swift] ๋ฐฑ์ค - 10973๋ฒ: ์ด์ ์์ด (0) | 2023.08.10 |
[swift] ๋ฐฑ์ค - 1388๋ฒ: ๋ฐ๋ฅ ์ฅ์ (0) | 2023.08.08 |