Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Algorithm/Baekjoon

[๋ฐฑ์ค€] (Swift) 10431๋ฒˆ - ์ค„ ์„ธ์šฐ๊ธฐ (๊ตฌํ˜„, ์‹ค๋ฒ„5)

๊ฐ์ž ๐Ÿฅ” 2023. 2. 13. 16:18
๋ฐ˜์‘ํ˜•

๐ŸŸ  ๋ฌธ์ œ

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

 

10431๋ฒˆ: ์ค„์„ธ์šฐ๊ธฐ

์ดˆ๋“ฑํ•™๊ต ์„ ์ƒ๋‹˜ ๊ฐ•์‚ฐ์ด๋Š” ์•„์ด๋“ค์„ ๋ฐ๋ฆฌ๊ณ  ๋‹จ์ฒด๋กœ ์–ด๋–ค ์ผ์„ ํ•  ๋•Œ ๋ถˆํŽธํ•จ์ด ์—†๋„๋ก ์ƒˆ๋กœ ๋ฐ˜์— ๋ฐฐ์ •๋ฐ›์€ ์•„์ด๋“ค์—๊ฒŒ ํ‚ค ์ˆœ์„œ๋Œ€๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค. ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•  ๋• ํ‚ค๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์•„์ด๊ฐ€ 1

www.acmicpc.net

 

๐ŸŸ  ๋‚˜์˜ ํ’€์ด

์•„๋‹ˆ ๋ฌธํ•ด๋ ฅ์ด ๋ฌธ์  ๊ฐ€? ์™œ ๋ฌธ์ œ๋ฅผ ์ดํ•ด๋ฅผ ๋ชปํ•˜์ง€?? ์ง„์งœ ๋ฉ์ฒญ์ธ๊ฐ€. ํ•˜.. ๐Ÿคฏ ์–ด์จŒ๋“ ,,

์—ฌ๊ธฐ ๋ถ€๋ถ„์„ ์ดํ•ด๋ฅผ ๋ชปํ–ˆ๋‹ค. ์•„๋ฌด๋‚˜ ํ•œ๋ช…์”ฉ ์„ธ์šด๋‹ค๊ณ ? ๊ธฐ์กด์— ์žˆ๋Š” ๋ฐฐ์—ด์—์„œ ํ•œ๋ช…์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ๋ฐ๋ ค์™€์•ผํ•˜๋‚˜? -> ์•„๋ฌด๋‚˜ ํ•œ๋ช…์”ฉ ๋ฝ‘๋Š๋‹ค๊ณ ? ์ด๊ฑฐ๋Š” ๊ทธ๋Ÿผ ๋ญ ์–ด์ฉŒ๋ž€๊ฑฐ์•ผ.. ์ด๋ ‡๊ฒŒ ํ•ด์„์ด ๋๋‹ค. ์•„๋‹ˆ,,, ๋‚ด๊ฐ€๋ฌธ์  ๊ฐ€...ํ•˜..

์–ด์จŒ๋“ , ํ•ด์„ํ•˜์ž๋ฉด ์•„๋ฌด๋‚˜ ํ•œ๋ช…์”ฉ ๋ฝ‘๋Š”๋‹ค -> ์ž…๋ ฅ๋ฐ›์€ 20๊ฐœ์˜ ์ˆซ์ž์ค‘ ๊ทธ๋ƒฅ ์ฒซ๋ฒˆ์งธ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉด์„œ ์ค„์„ธ์›Œ๋ณธ๋‹ค. ์ด๋œป์œผ๋กœ ํ•ด์„ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ’€๋ฆฐ๋‹ค. ์ฆ‰ , 20๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์ž–์•„? ๊ทธ๋Ÿผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋Œ๋ฆฌ๋ฉด์„œ ์•ž์— ๋” ํฐ๋†ˆ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ.

์ด ๋ฌธ์ œ๋Š” ์ž…๋ ฅ๋ฐ›์€ test case ๊ฐฏ์ˆ˜๋งŒํผ ๋Œ๋ ค์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ž…๋ ฅ๋ฐ›์€ p๋งŒํผ for๋ฌธ์„ ๋Œ๋ ค์ค„ ๊ฑฐ๊ณ , ๊ทธ ์•ˆ์—์„œ input์„ ๋ฐ›์„๊ฒƒ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ , ์ž…๋ ฅ๋ฐ›์€ input์„ ๊ธฐ์ค€์œผ๋กœ for๋ฌธ์„ ๋Œ๋ ค์ค„๊ฑด๋ฐ, ์•ž์— ์–ด๋–ค๋†ˆ์ด ๋” ํฐ์ง€ ๋ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋‘๋ฒˆ์งธ for๋ฌธ์€ 0๋ถ€ํ„ฐ ์ง์ „๋†ˆ๊นŒ์ง€ ๋Œ๋ ค์ฃผ๋ฉด๋œ๋‹ค.

๋Œ๋ ค์ฃผ๋Š”๋ฐ,, ์•ž์—์„œ ๋ฌด์กฐ๊ฑด ํฐ๋†ˆ์ด๋ผ๊ณ !! ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋ฉด ์•ˆ๋œ๋‹ค. ํฐ๋†ˆ๋“ค์ค‘ ๊ฐ€์žฅ ์ž‘์€๋†ˆ์˜ ์•ž์— ์„ธ์›Œ์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ minHeight๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ฃผ๊ณ , minHeight์—๋‹ค๊ฐ€ ์•ž์— ๋†ˆ๋“ค์ค‘ ๊ฐ€์žฅ ํฐ๋†ˆ ๊ทธ์ค‘์—์„œ ์ž‘์€๋†ˆ!! ์„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

 

๐ŸŸ  ์ •๋‹ต ์ฝ”๋“œ

์•„,, ๋ฒ”์œ„ p ๊ฐ€ 1000์ดํ•˜์ธ๋ฐ, height๊ฐ€ 1000์ดํ•˜์ธ์ค„ ์•Œ๊ณ  ใ…‹ใ…‹ใ…‹ minheight๋ฅผ 1001๋กœ ๋‘์—ˆ๋‹ค๊ฐ€ 4๋ฒˆํ‹€๋ฆผ;; ํ™”๊ฐ€ ๋„ˆ๋ฌด๋‚ฌ๋‹ค. ๋‚ด๊ฐ€ ์˜ˆ์™ธ ์ผ€์ด์Šค๋ฅผ ๋ชป์ฐพ๋Š”์ค„ ์•Œ๊ณ ... ์กฐ๊ฑด ๋‹ค์‹œ๋ณด๋‹ˆ๊นŒ p ๊ฐ€ 1000์ดํ•˜๋”๋ผ ^___^ minHeight์˜ ์ดˆ๊ธฐ๊ฐ’์„ ํ„ฐ๋ฌด๋‹ˆ์—†๋Š” ํฐ ์ˆ˜ 999999999๋กœ ๋‘๊ณ  ํ’€์ด ์™„๋ฃŒ

import Foundation

let p = Int(readLine()!)!
private func solution() {
    // test case ๋งŒํผ ๋ฐ˜๋ณต
    for i in 1...p {
        var heightArr = readLine()!.split(separator: " ").map{ Int($0)! }
        heightArr.removeFirst()
        var footCnt = 0

        for j in 0..<heightArr.count {
            var minHeight = 999999999
            var minIdx = j

            for k in 0..<j {
                // ์•ž์— ๋” ํฐ์•  ์žˆ๋‚˜? & ์ œ์ผ์ž‘์€์•  ๋ˆ„๊ตฐ๊ฐ€?
                if heightArr[j] < heightArr[k], minHeight > heightArr[k] {
                    minHeight = heightArr[k]
                    minIdx = k
                }
            }

            if minIdx != j {
                let temp = heightArr[j]
                heightArr.remove(at: j)
                heightArr.insert(temp, at: minIdx)
                footCnt += j - minIdx
            }
        }
        print("\(i) \(footCnt)")
    }
}

solution()
๋ฐ˜์‘ํ˜•