๊ธ€ ์ž‘์„ฑ์ž: ์ด์ง€์›๐ŸŒฉ๏ธ

14:01

์ฒ˜์Œ์— ๋ฌธ์„œ๋ฅผ ์ €์žฅํ•  ๋•Œ, ๋ฌธ์„œ์˜ ์ค‘์š”๋„์™€ ์ดˆ๊ธฐ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ™์ด ์ €์žฅํ•œ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ, ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ํ์—์„œ ๊ฐ€์žฅ ์ค‘์š”๋„๊ฐ€ ๋†’์€ ๊ฐ’์„ ๊ตฌํ•˜๊ณ  ์ฒซ๋ฒˆ์งธ ๋ฌธ์„œ์˜ ์ค‘์š”๋„์™€ ๋น„๊ตํ•œ๋‹ค. ๊ฐ™์œผ๋ฉด answer ๋ฐฐ์—ด์— ์‚ฝ์ž…ํ•˜๊ณ , ๊ฐ™์ง€ ์•Š์œผ๋ฉด ํ์˜ ๋งจ ๋’ค๋กœ ๋ณด๋‚ธ๋‹ค.
ํ๊ฐ€ ๋น„๋ฉด, answer ๋ฐฐ์—ด์—์„œ ์ดˆ๊ธฐ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฌธ์„œ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„์„œ + 1 ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฌธ์ œ

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


๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

Swift

let t = Int(readLine()!)!
for _ in 0..<t {
    let n = readLine()!.split(separator: " ").map { Int(String($0))! }
    var importance = readLine()!.split(separator: " ").enumerated().map { (index, element) in
        return [Int(String(element))!, index]}
    var answer = [[Int]]()
    while !importance.isEmpty {
        if let first = importance.first, let max = importance.max(by: { $0[0] < $1[0] }) {
            if first[0] == max[0] {
                answer.append(importance.removeFirst())
            } else {
                importance.append(importance.removeFirst())
            }
        }
    }

    if let find = answer.firstIndex(where: { $0[1] == n[1] }) {
        print(find + 1)
    }
}
 

1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ

์—ฌ๋Ÿฌ๋ถ„๋„ ์•Œ๋‹ค์‹œํ”ผ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋ฆฐํ„ฐ ๊ธฐ๊ธฐ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ธ์‡„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์ธ์‡„ ๋ช…๋ น์„ ๋ฐ›์€ ‘์ˆœ์„œ๋Œ€๋กœ’, ์ฆ‰ ๋จผ์ € ์š”์ฒญ๋œ ๊ฒƒ์„ ๋จผ์ € ์ธ์‡„ํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์„œ๊ฐ€ ์Œ“์ธ๋‹ค๋ฉด Queue ์ž๋ฃŒ๊ตฌ์กฐ์—

www.acmicpc.net

 

๋ฐ˜์‘ํ˜•