๐Ÿ“ ์ฝ”ํ…Œ/BOJ

[Swift] ๋ฐฑ์ค€1966

JerryiOS 2023. 3. 24. 16:41

import Foundation

/// N - ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜
/// n - ๋ฌธ์„œ์˜ ๊ฐœ์ˆ˜
/// m - ํ˜„์žฌ Queue์—์„œ ๋ช‡๋ฒˆ์งธ๋กœ ๋†“์—ฌ์žˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ (์ด ๋ฌธ์„œ๊ฐ€ ๋ช‡๋ฒˆ์งธ๋กœ ์ธ์‡„๋˜์—ˆ๋Š”์ง€ ์ฐพ์•„์•ผํ•จ)
///
/// ํ”„๋ฆฐํ„ฐ ์ž‘๋™๋ฐฉ์‹
/// 1. ํ˜„์žฌ Queue์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๋ฌธ์„œ์˜ '์ค‘์š”๋„' ํ™•์ธ
/// 2. ๋‚˜๋จธ์ง€ ๋ฌธ์„œ๋“ค ์ค‘ ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ๊ฐ€ ์žˆ์œผ๋ฉด ๋งจ๋’ค๋กœ ๋ณด๋‚ด๋ฒ„๋ฆผ ๊ทธ๋ ‡์ง€์•Š๋‹ค๋ฉด ๋ฐ”๋กœ ์ธ์‡„

let N = Int(readLine()!)!

for _ in 0..<N {
    let nm = readLine()!.components(separatedBy: " ").map { Int($0)! }
    let n = nm[0]
    let m = nm[1]
    var docs = readLine()!.components(separatedBy: " ").map { Int($0)! }
    var printCount = 0
    
    var currentIndex = m
    
    while true {
        // ๊ฐ’์ด ์—†์„๊ฒฝ์šฐ
        if docs.isEmpty { break }
        
        // ๋ฝ‘์€ ๊ฐ’์ด ์ตœ๋Œ€๊ฐ’์ผ ๊ฒฝ์šฐ
        if docs.first == docs.max() {
            printCount += 1
            // ์ฒซ๋ฒˆ์งธ ๊ฐ’์ด ์ตœ๋Œ€๊ฐ’์ธ ๊ฒฝ์šฐ ์ข…๋ฃŒ
            if currentIndex == 0 {
                break
            }
            docs.removeFirst()
            currentIndex -= 1
        } else {
            // ๋ฝ‘์€ ๊ฐ’์ด ์ตœ๋Œ€๊ฐ’์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ฎ๊ธฐ๊ธฐ
            docs.append(docs.removeFirst())
            currentIndex = currentIndex == 0 ? docs.endIndex - 1 : currentIndex - 1
        }
    }
    
    print(printCount)
    docs.removeAll()
}
๋ฐ˜์‘ํ˜•