MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 20006๋ฒˆ: ๋žญํ‚น์ „ ๋Œ€๊ธฐ์—ด ๋ณธ๋ฌธ

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

[swift] ๋ฐฑ์ค€ - 20006๋ฒˆ: ๋žญํ‚น์ „ ๋Œ€๊ธฐ์—ด

MUKER 2023. 8. 1. 13:28
๋ฌธ์ œ ๋งํฌ
 

20006๋ฒˆ: ๋žญํ‚น์ „ ๋Œ€๊ธฐ์—ด

๋ชจ๋“  ์ƒ์„ฑ๋œ ๋ฐฉ์— ๋Œ€ํ•ด์„œ ๊ฒŒ์ž„์˜ ์‹œ์ž‘ ์œ ๋ฌด์™€ ๋ฐฉ์— ๋“ค์–ด์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ๋ ˆ๋ฒจ๊ณผ ์•„์ด๋””๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์‹œ์ž‘ ์œ ๋ฌด์™€ ํ”Œ๋ ˆ์ด์–ด์˜ ์ •๋ณด๋“ค์€ ์ค„ ๋ฐ”๊ฟˆ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ๋ ˆ๋ฒจ๊ณผ ์•„์ด๋””๋Š” ํ•œ ์ค„์—์„œ ๊ณต๋ฐฑ

www.acmicpc.net


๋ฌธ์ œ

์ข…์šด์ด๋Š” ์šด์˜ํ•˜๋˜ ๊ฒŒ์ž„์— ๋žญํ‚น์ „ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํ”Œ๋ ˆ์ด์–ด ๊ฐ„์˜ ์‹ค๋ ฅ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž…์žฅ์„ ์‹ ์ฒญํ•˜๋ฉด ์ž์‹ ๊ณผ ๋น„์Šทํ•œ ๋ ˆ๋ฒจ์˜ ํ”Œ๋ ˆ์ด์–ด๋“ค์„ ๋งค์นญํ•˜์—ฌ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•˜๊ฒŒ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด ๊ฐ„ ๋งค์นญ์„ ํ•ด์ฃผ๋Š” ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ž…์žฅ์„ ์‹ ์ฒญํ•˜์˜€์„ ๋•Œ ๋งค์นญ์ด ๊ฐ€๋Šฅํ•œ ๋ฐฉ์ด ์—†๋‹ค๋ฉด ์ƒˆ๋กœ์šด ๋ฐฉ์„ ์ƒ์„ฑํ•˜๊ณ  ์ž…์žฅ์‹œํ‚จ๋‹ค. ์ด๋–„ ํ•ด๋‹น ๋ฐฉ์—๋Š” ์ฒ˜์Œ ์ž…์žฅํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ๋ ˆ๋ฒจ์„ ๊ธฐ์ค€์œผ๋กœ -10๋ถ€ํ„ฐ +10๊นŒ์ง€ ์ž…์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. ์ž…์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์ด ์žˆ๋‹ค๋ฉด ์ž…์žฅ์‹œํ‚จ ํ›„ ๋ฐฉ์˜ ์ •์›์ด ๋ชจ๋‘ ์ฐฐ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ์‹œํ‚จ๋‹ค.
    1. ์ด๋•Œ ์ž…์žฅ์ด ๊ฐ€๋Šฅํ•œ ๋ฐฉ์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ๋จผ์ € ์ƒ์„ฑ๋œ ๋ฐฉ์— ์ž…์žฅํ•œ๋‹ค.
  3. ๋ฐฉ์˜ ์ •์›์ด ๋ชจ๋‘ ์ฐจ๋ฉด ๊ฒŒ์ž„์„ ์‹œ์ž‘์‹œํ‚จ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜ p, ํ”Œ๋ ˆ์ด์–ด์˜ ๋‹‰๋„ค์ž„ n, ํ”Œ๋ ˆ์ด์–ด์˜ ๋ ˆ๋ฒจ l, ๋ฐฉ ํ•œ๊ฐœ์˜ ์ •์› m์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋งค์นญํ•ด์ฃผ๊ณ  ์ตœ์ข…์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ฐฉ์˜ ์ƒํƒœ์™€ ์ž…์žฅ ํ”Œ๋ ˆ์ด์–ด๋“ค์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์ž.

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜ p(1 ≤ p ≤ 300)์™€ ๋ฐฉ์˜ ์ •์› m(1 ≤ m ≤ 300)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ p๊ฐœ์˜ ์ค„์—๋Š” ํ”Œ๋ ˆ์ด์–ด์˜ ๋ ˆ๋ฒจ l (1 ≤ l ≤ 500)๊ณผ ๋‹‰๋„ค์ž„ n์ด ๊ณต๋ฐฑ์„ ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค.

์ž…๋ ฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•œ๋‹ค.

๋‹‰๋„ค์ž„์€ ์ค‘๋ณต๋˜์ง€ ์•Š์œผ๋ฉฐ ๊ณต๋ฐฑ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ ๋‹‰๋„ค์ž„์˜ ๊ธธ์ด๋Š” 16์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ๋ ฅ

๋ชจ๋“  ์ƒ์„ฑ๋œ ๋ฐฉ์— ๋Œ€ํ•ด์„œ ๊ฒŒ์ž„์˜ ์‹œ์ž‘ ์œ ๋ฌด์™€ ๋ฐฉ์— ๋“ค์–ด์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ๋ ˆ๋ฒจ๊ณผ ์•„์ด๋””๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์‹œ์ž‘ ์œ ๋ฌด์™€ ํ”Œ๋ ˆ์ด์–ด์˜ ์ •๋ณด๋“ค์€ ์ค„ ๋ฐ”๊ฟˆ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ๋ ˆ๋ฒจ๊ณผ ์•„์ด๋””๋Š” ํ•œ ์ค„์—์„œ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

๋ฐฉ์€ ์ƒ์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐฉ์— ์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ์ •๋ณด๋Š” ๋‹‰๋„ค์ž„์ด ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์„œ๋Š” ํ”Œ๋ ˆ์ด์–ด๋ถ€ํ„ฐ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐฉ์ด ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉด Started!๋ฅผ ๋Œ€๊ธฐ ์ค‘์ด๋ฉด Waiting!์„ ์ถœ๋ ฅ์‹œํ‚จ๋‹ค.

์˜ˆ์ œ


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

var queue = [[(Int,String)]]()
let V = readLine()!.split { $0 == " " }.map { Int($0)! }, p = V[0], m = V[1]
loop: for _ in 0..<p {
    let LN = readLine()!.split { $0 == " " }, l = Int(LN[0])!, n = String(LN[1])

    if queue.isEmpty {
        queue.append([(l,n)])
        continue
    }
    for i in 0..<queue.count {
        let cut = queue[i][0].0
        guard queue[i].count < m && cut+10 >= l && cut-10 <= l else { continue }
        queue[i].append((l,n))
        continue loop
    }
    queue.append([(l,n)])
}
queue.forEach {
    print($0.count == m ? "Started!" : "Waiting!")
    for i in $0.sorted(by: { $0.1 < $1.1 }) {
        print("\(i.0) \(i.1)")
    }
}

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

  • ๋ฌธ์ œ๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ตฌํ˜„ ๋ฌธ์ œ๋กœ ๊ตฌํ•ด์•ผํ•˜๋Š” ๋‹ต์„ ์ ˆ์ฐจ์ ์œผ๋กœ ํ’€์–ด๋ดค์Šต๋‹ˆ๋‹ค.