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

Algorithm/Baekjoon

[๋ฐฑ์ค€] (Swift) 1449๋ฒˆ - ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน (feat. ๊ทธ๋ฆฌ๋””)

๊ฐ์ž ๐Ÿฅ” 2023. 2. 1. 17:52
๋ฐ˜์‘ํ˜•

๐ŸŸฃ ๋ฌธ์ œํ’€์ด

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

 

1449๋ฒˆ: ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน

์ฒซ์งธ ์ค„์— ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ๊ฐœ์ˆ˜ N๊ณผ ํ…Œ์ดํ”„์˜ ๊ธธ์ด L์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N๊ณผ L์€ 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ์œ„์น˜๋Š” 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜

www.acmicpc.net

 

๐ŸŸฃ ๋‚˜์˜ ๋ฌธ์ œ ํ’€์ด

์•„๋‹ˆ ์ฒ˜์Œ์— ๋ฌธ์ œ ์ฝ๊ณ  0.5์”ฉ ๊ฒน์นœ๋‹ค๊ธธ๋ž˜,, ๋ญ”์˜๋ฏผ๊ฐ€ ์‹ถ์–ด์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์ƒ‰์น ์ด ๋˜๋Š” ์ค„ ์•Œ์•˜๋‹ค. ๊ทธ๋‹ˆ๊นŒ ์ˆ˜๋ฆฌ๊ตฌ๋ฉ ํ•œ๊ฐœ๊ฐ€ 1์ธ์ค„;; 

๊ทผ๋ฐ ๋ญ ์–ด์จŒ๋“  ์ด๊ฒŒ ์•„๋‹ˆ์—ˆ๊ณ ,,, ๊ทธ๋ƒฅ ํ…Œ์ดํ”„ ๊ธธ์ด๊ฐ€ L ๋กœ ๊ณ ์ •์ด๋‹ˆ๊นŒ ๊ทธ๊ฑธ๋กœ ๋ช‡๊ตฌ๋ฉ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋ƒ๋Š” ๊ฑฐ์˜€๋‹ค. ๊ทธ๋ƒฅ ๊ฐ„๋‹จํ–ˆ๋‹ค ์•„๋ž˜์ฒ˜๋Ÿผ!!

์ด๋ ‡๊ฒŒ ... ๋ฌธ์ œ๋ฅผ ํ•ด์„ํ•˜๋Š”๋ฐ๋งŒ 20๋ถ„์„ ๋„˜๊ฒŒ ์“ด๋“ฏ ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ (๋ฌธํ•ด๋ ฅ์ด ๋ฌธ์  ๊ฐ€,,)
์–ด์จŒ๋“ , ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ํฌ์ธํŠธ๊ฐ€ ์žˆ๋‹ค. ํ…Œ์ดํ”„์˜ ๊ธธ์ด์— ์ง‘์ค‘ํ•ด๋ณด์ž.

๋‚ด๊ฐ€ ๊ทธ๋ฆฐ ๋‘๋ฒˆ์งธ ์—ฐ๋‘์ƒ‰ ๊ทธ๋ฆผ์„ ์‚ดํŽด๋ณด์ž. ํ…Œ์ดํ”„๋Š” 3์—์„œ ๋‘๋ฒˆ์žฌ ํ…Œ์ดํ”„๋ฅผ ์ƒˆ๋กœ ์จ์•ผํ•œ๋‹ค. ํ…Œ์ดํ”„์˜ ๋งจ์ฒ˜์Œ ์‹œ์ž‘์ ์€ 1์ด๊ณ , 1๋ถ€๋ถ„์— ํ…Œ์ดํ”„๋ฅผ ๋ถ™์—ฌ๋ฒ„๋ฆฌ๋ฉด, 2๋Š” ์ž๋™์œผ๋กœ ๋ง‰ํžŒ๋‹ค. 3์ผ๋•Œ ์ƒˆ๋กœ์šด ํ…Œ์ดํ”„๋ฅผ ๋ถ™์—ฌ์•ผํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ƒˆ๋กœ์šด ํ…Œ์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

(์ฒซ๋ฒˆ์งธ ์ง€์  ์ œ์™ธํ•˜๊ณ  ๋‘๋ฒˆ์žฌ ๋ˆ„์ˆ˜์ง€์ ๋ถ€ํ„ฐ ํ™•์ธํ•ด๋ณด๋ฉด,)
๋ˆ„์ˆ˜์ง€์  - ๋‚ด๊ฐ€ ํ˜„์žฌ ๊ฒ€ํ† ํ•˜๊ณ ์žˆ๋Š” ๋ˆ„์ˆ˜์ง€์  < ํ…Œ์ดํ”„์˜ ๊ธธ์ด 
์ด ๊ฒฝ์šฐ์ผ๋•Œ๋Š”, ํ•œ๊ฐœ์˜ ํ…Œ์ดํ”„ (์ด์ „์— ๋ถ™์—ฌ๋†“์€ ํ…Œ์ดํ”„)๋กœ ์ž๋™์œผ๋กœ ๋ง‰ํžŒ๋‹ค.
์œ„ ๊ฒฝ์šฐ์—์„œ๋Š” 2 - 1 < 2 ์ด๊ธฐ ๋•Œ๋ฌธ์—, 2๋ฒˆ์ง€์ ์€ ์ฒซ๋ฒˆ์งธ ํ…Œ์ดํ”„๋กœ ์ž๋™์œผ๋กœ ๋ง‰ํžŒ๋‹ค!

๋งŒ์•ฝ, ๋ˆ„์ˆ˜์ง€์  - ๋‚ด๊ฐ€ ํ˜„์žฌ ๊ฒ€ํ† ํ•˜๊ณ ์žˆ๋Š” ๋ˆ„์ˆ˜์ง€์  >= ํ…Œ์ดํ”„์˜ ๊ธธ์ด ๋ผ๋ฉด,
์ƒˆ๋กœ์šด ํ…Œ์ดํ”„๋ฅผ ๊บผ๋‚ด๋“ค์–ด์•ผํ•œ๋‹ค!! 

์ฒซ๋ฒˆ์žฌ ์ง€์ ์„ ์ œ์™ธํ•˜๊ณ  ๋‘๋ฒˆ์งธ ๋ˆ„์ˆ˜์ง€์ ๋ถ€ํ„ฐ ํ™•์ธํ•œ ์ด์œ ๋Š”, ์ฒซ๋ฒˆ์งธ ๋ˆ„์ˆ˜์ง€์ ์—๋Š” ๋ฌด์กฐ๊ฑด!! ํ…Œ์ดํ”„๋ฅผ ๋ถ™์—ฌ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๊ฒƒ์€ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ์ž!

๊ทธ๋ฆฌ๊ณ  ์ œ์ผ์ค‘์š”ํ•œ๊ฑด, ๋ˆ„์ˆ˜์ง€์ ์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ sortํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. ๋’ค์ฃฝ๋ฐ•์ฃฝ ์ž…๋ ฅ๋  ์ˆ˜ ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ˆ„์ˆ˜์ง€์ ์„ ์ •๋ ฌํ•ด์ค€ ๋’ค, ์•ž๋’ค ๋ˆ„์ˆ˜์ง€์ ๋“ค์„ ์ž˜ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

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

import Foundation

let nl = readLine()!.split(separator: " ").map{ Int($0)! }
let n = nl[0]
let tapeLen = nl[1]
let arr = readLine()!.split(separator: " ").map{ Int($0)! }.sorted(by: <)

var start = 0
var tapeCnt = 0

for i in 0..<n {
    if i == 0 {
        tapeCnt += 1
        start = arr[i]
        continue
    }

    if arr[i] - start >= tapeLen {
        tapeCnt += 1
        start = arr[i]
    }
}

print(tapeCnt)
๋ฐ˜์‘ํ˜•