์ƒˆ์†Œ์‹

๐Ÿงฎ ์•Œ๊ณ ๋ฆฌ์ฆ˜/-- ๋ฐฑ์ค€ (BOJ) - Swift

(Swift) [๋ฐฑ์ค€/Boj] 1021๋ฒˆ: ํšŒ์ „ํ•˜๋Š” ํ

  • -

#๋ฌธ์ œ๋งํฌ

https://www.acmicpc.net/problem/1021

 

1021๋ฒˆ: ํšŒ์ „ํ•˜๋Š” ํ

์ฒซ์งธ ์ค„์— ํ์˜ ํฌ๊ธฐ N๊ณผ ๋ฝ‘์•„๋‚ด๋ ค๊ณ  ํ•˜๋Š” ์ˆ˜์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , M์€ N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ง€๋ฏผ์ด๊ฐ€ ๋ฝ‘์•„๋‚ด๋ ค๊ณ  ํ•˜๋Š” ์ˆ˜์˜ ์œ„์น˜๊ฐ€

www.acmicpc.net

#๋‚œ์ด๋„

Silver 4

 

#์ ‘๊ทผ ๋ฐฉ๋ฒ• ๋ฐ ์ค‘์š” ํฌ์ธํŠธ

๋ฌธ์ œ์—์„œ 3๊ฐ€์ง€ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ œ์‹œํ•˜๊ณ  ์žˆ๋‹ค. ์—ฐ์‚ฐ๋“ค์„ ์ฝ”๋“œ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ์ง€ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ฑ(Deque) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. (์•ž, ๋’ค๋กœ ์‚ฝ์ž… ์ถ”์ถœ์ด ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ)

  1. ์ฒซ๋ฒˆ์งธ ์›์†Œ ์ถ”์ถœ : ์ฒซ๋ฒˆ์งธ ์›์†Œ ์‚ญ์ œ
  2. ์™ผ์ชฝ์œผ๋กœ 1์นธ ์ด๋™ : 0๋ฒˆ ์›์†Œ ์ถ”์ถœํ•ด์„œ ๋งจ ๋’ค์— ์‚ฝ์ž…
  3. ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1์นธ ์ด๋™ : ๋งจ ๋’ค์˜ ์›์†Œ ์ถ”์ถœํ•ด์„œ 0๋ฒˆ์— ์‚ฝ์ž…

์ค‘์š”ํ•œ ํฌ์ธํŠธ๋Š” ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€์•ผ ์›ํ•˜๋Š” ์›์†Œ๋ฅผ ๋นจ๋ฆฌ ๋ฝ‘์„์ง€, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€์•ผ ๋นจ๋ฆฌ ๋ฝ‘์„์ง€ ์„ ํƒํ•˜๋Š” ๋กœ์ง์ด์—ˆ๋‹ค.

๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ 2๋กœ ๋‚˜๋ˆˆ๋’ค, Target์ด ์™ผ์ชฝํŒŒํŠธ์— ์†ํ•˜๋Š”์ง€, ์˜ค๋ฅธ์ชฝ ํŒŒํŠธ์— ์†ํ•˜๋Š”์ง€ ๋ถ„๊ธฐํ•˜์—ฌ ํšŒ์ „์‹œํ‚ฌ ๋ฐฉํ–ฅ์„ ์ •ํ•˜๋ฉด ๋œ๋‹ค.

 

 

#Code (Swift)

var nm = readLine()!.split(separator: " ").map{Int($0)!}
let n = nm[0], m = nm[1]
var targets = Array(readLine()!.split(separator: " ").map{Int($0)!})
var arr = Array(1...n)
var answer = 0

func rotate(_ direction: Int){
    if direction == -1{
        let temp = arr.removeFirst()
        arr.append(temp)
    }else{
        let temp = arr.removeLast()
        arr.insert(temp, at: 0)

    }
}
func find(){
    let target = targets[0]
    let targetIdx = arr.firstIndex(of: target)!
    if target == arr[0] {
        targets.removeFirst()
        arr.removeFirst()
    }else if targetIdx > arr.count/2{
        rotate(1)
        answer += 1
    }else{
        rotate(-1)
        answer += 1
    }
}

while(!targets.isEmpty){
    find()
}

print(answer)
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.