MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 8979๋ฒˆ: ์˜ฌ๋ฆผํ”ฝ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/BAEKJOON

[swift] ๋ฐฑ์ค€ - 8979๋ฒˆ: ์˜ฌ๋ฆผํ”ฝ

MUKER 2023. 7. 14. 09:56
๋ฌธ์ œ ๋งํฌ
 

8979๋ฒˆ: ์˜ฌ๋ฆผํ”ฝ

์ž…๋ ฅ์˜ ์ฒซ ์ค„์€ ๊ตญ๊ฐ€์˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 1,000)๊ณผ ๋“ฑ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๊ตญ๊ฐ€ K(1 โ‰ค K โ‰ค N)๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๊ตญ๊ฐ€๋Š” 1๋ถ€ํ„ฐ N ์‚ฌ์ด์˜ ์ •์ˆ˜๋กœ ํ‘œํ˜„๋œ๋‹ค. ์ดํ›„ N๊ฐœ์˜ ๊ฐ ์ค„์—๋Š” ์ฐจ๋ก€๋Œ€๋กœ ๊ฐ

www.acmicpc.net


๋ฌธ์ œ

์˜ฌ๋ฆผํ”ฝ์€ ์ฐธ๊ฐ€์— ์˜์˜๊ฐ€ ์žˆ๊ธฐ์— ๊ณต์‹์ ์œผ๋กœ๋Š” ๊ตญ๊ฐ€๊ฐ„ ์ˆœ์œ„๋ฅผ ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ๊ตญ๊ฐ€๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ž˜ ํ•˜๋Š”์ง€์— ๊ด€์‹ฌ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ณต์‹์ ์œผ๋กœ๋Š” ๊ตญ๊ฐ€๊ฐ„ ์ˆœ์œ„๋ฅผ ์ •ํ•˜๊ณ  ์žˆ๋‹ค. ๋‘ ๋‚˜๋ผ๊ฐ€ ๊ฐ๊ฐ ์–ป์€ ๊ธˆ, ์€, ๋™๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ๋ณดํ†ต ๋‹ค์Œ ๊ทœ์น™์„ ๋”ฐ๋ผ ์–ด๋Š ๋‚˜๋ผ๊ฐ€ ๋” ์ž˜ํ–ˆ๋Š”์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

  1. ๊ธˆ๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๋” ๋งŽ์€ ๋‚˜๋ผ 
  2. ๊ธˆ๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด, ์€๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๋” ๋งŽ์€ ๋‚˜๋ผ
  3. ๊ธˆ, ์€๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๊ฐ™์œผ๋ฉด, ๋™๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๋” ๋งŽ์€ ๋‚˜๋ผ 

๊ฐ ๊ตญ๊ฐ€๋Š” 1๋ถ€ํ„ฐ N ์‚ฌ์ด์˜ ์ •์ˆ˜๋กœ ํ‘œํ˜„๋œ๋‹ค. ํ•œ ๊ตญ๊ฐ€์˜ ๋“ฑ์ˆ˜๋Š” (์ž์‹ ๋ณด๋‹ค ๋” ์ž˜ํ•œ ๋‚˜๋ผ ์ˆ˜) + 1๋กœ ์ •์˜๋œ๋‹ค. ๋งŒ์•ฝ ๋‘ ๋‚˜๋ผ๊ฐ€ ๊ธˆ, ์€, ๋™๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๊ฐ™๋‹ค๋ฉด ๋‘ ๋‚˜๋ผ์˜ ๋“ฑ์ˆ˜๋Š” ๊ฐ™๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 1๋ฒˆ ๊ตญ๊ฐ€๊ฐ€ ๊ธˆ๋ฉ”๋‹ฌ 1๊ฐœ, ์€๋ฉ”๋‹ฌ 1๊ฐœ๋ฅผ ์–ป์—ˆ๊ณ , 2๋ฒˆ ๊ตญ๊ฐ€์™€ 3๋ฒˆ ๊ตญ๊ฐ€๊ฐ€ ๋ชจ๋‘ ์€๋ฉ”๋‹ฌ 1๊ฐœ๋ฅผ ์–ป์—ˆ์œผ๋ฉฐ, 4๋ฒˆ ๊ตญ๊ฐ€๋Š” ๋ฉ”๋‹ฌ์„ ์–ป์ง€ ๋ชปํ•˜์˜€๋‹ค๋ฉด, 1๋ฒˆ ๊ตญ๊ฐ€๊ฐ€ 1๋“ฑ, 2๋ฒˆ ๊ตญ๊ฐ€์™€ 3๋ฒˆ ๊ตญ๊ฐ€๊ฐ€ ๊ณต๋™ 2๋“ฑ, 4๋ฒˆ ๊ตญ๊ฐ€๊ฐ€ 4๋“ฑ์ด ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ 3๋“ฑ์€ ์—†๋‹ค. 

๊ฐ ๊ตญ๊ฐ€์˜ ๊ธˆ, ์€, ๋™๋ฉ”๋‹ฌ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ, ์–ด๋Š ๊ตญ๊ฐ€๊ฐ€ ๋ช‡ ๋“ฑ์„ ํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 

์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ ์ค„์€ ๊ตญ๊ฐ€์˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 1,000)๊ณผ ๋“ฑ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๊ตญ๊ฐ€ K(1 โ‰ค K โ‰ค N)๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๊ตญ๊ฐ€๋Š” 1๋ถ€ํ„ฐ N ์‚ฌ์ด์˜ ์ •์ˆ˜๋กœ ํ‘œํ˜„๋œ๋‹ค. ์ดํ›„ N๊ฐœ์˜ ๊ฐ ์ค„์—๋Š” ์ฐจ๋ก€๋Œ€๋กœ ๊ฐ ๊ตญ๊ฐ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜์™€ ์ด ๊ตญ๊ฐ€๊ฐ€ ์–ป์€ ๊ธˆ, ์€, ๋™๋ฉ”๋‹ฌ์˜ ์ˆ˜๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. ์ „์ฒด ๋ฉ”๋‹ฌ ์ˆ˜์˜ ์ดํ•ฉ์€ 1,000,000 ์ดํ•˜์ด๋‹ค.

์ถœ๋ ฅ

์ถœ๋ ฅ์€ ๋‹จ ํ•œ ์ค„์ด๋ฉฐ, ์ž…๋ ฅ๋ฐ›์€ ๊ตญ๊ฐ€ K์˜ ๋“ฑ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ์ •์ˆ˜๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ๋“ฑ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ๋ฌธ์ œ์—์„œ ์ •์˜๋œ ๋ฐฉ์‹์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค. 

์„œ๋ธŒํƒœ์Šคํฌ

๋ฒˆํ˜ธ ๋ฐฐ์  ์ œํ•œ
1 8 ์˜ˆ์ œ ์ž…๋ ฅ, ์ถœ๋ ฅ
2 12 N = 2
3 20 ๋ชจ๋“  ๊ตญ๊ฐ€์˜ ์€๋ฉ”๋‹ฌ ๋ฐ ๋™๋ฉ”๋‹ฌ ํš๋“ ์ˆ˜๋Š” 0
4 25 N โ‰ค 500
5 35 ์ถ”๊ฐ€์ ์ธ ์ œ์•ฝ ์กฐ๊ฑด์€ ์—†๋‹ค.

์˜ˆ์ œ


์„ฑ๊ณต ํ’€์ด

import Foundation

let NK = readLine()!.split { $0 == " " }.map { Int($0)! }, N = NK[0], K = NK[1]
var medals = [[Int]]()

for _ in 0..<N {
    medals.append(readLine()!.split { $0 == " " }.map { Int($0)! })
}

medals.sort { // ์ˆœ์œ„ ์ •๋ ฌํ•˜๊ธฐ
    $0[1] == $1[1] ? $0[2] == $1[2] ? $0[3] > $1[3] : $0[2] > $1[2] : $0[1] > $1[1]
}

for i in 0..<N {
    if medals[i][0] == K {
        var index = i
        while true {
            guard index > 0 else {
                print(1)
                break
            } // ์•ž์˜ ๋ฉ”๋‹ฌ๊ณผ ๊ฐ™๋‹ค๋ฉด index -1 ํ•˜๊ณ  ๋‹ค์‹œ while๋ฌธ ๋Œ๋ฆฌ๊ธฐ
            if medals[index-1][1...] == medals[index][1...] { index -= 1 }
            else {
                print(index+1)
                break
            }
        }
        break
    }
}

ํ’€์ด ํ‚ค์›Œ๋“œ

  • ๊ธˆ,์€,๋™ ๋ฉ”๋‹ฌ์— ๋”ฐ๋ผ ์ˆœ์œ„๋ฅผ ์ •๋ฆฌํ•œ ๋’ค, K์˜ ์ธ๋ฑ์Šค์—์„œ ๋ถ€ํ„ฐ ์•ž ์ˆœ์œ„์˜ ๋ฉ”๋‹ฌ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์•ž ์ˆœ์œ„์˜ ์ธ๋ฑ์Šค๋ฅผ ๋”ฐ๋ฅด๊ณ  ๋‹ค์‹œ ๋ฐ˜๋ณต ํ•ฉ๋‹ˆ๋‹ค.
  • ์•ž ์ˆœ์œ„์˜ ๋ฉ”๋‹ฌ๊ณผ ์ƒ์ดํ•œ ๋ฉ”๋‹ฌ์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜์—ฌ, ์ƒ์ดํ•œ ๋ฉ”๋‹ฌ์˜ ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด ํ˜„์žฌ index์— +1(์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ˆœ์œ„๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—)ํ•˜์—ฌ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.