MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์š”๊ฒฉ ์‹œ์Šคํ…œ ๋ณธ๋ฌธ

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

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์š”๊ฒฉ ์‹œ์Šคํ…œ

MUKER 2023. 7. 10. 23:45
๋ฌธ์ œ ๋งํฌ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


๋ฌธ์ œ

A ๋‚˜๋ผ๊ฐ€ B ๋‚˜๋ผ๋ฅผ ์นจ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค. B ๋‚˜๋ผ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ „๋žต ์ž์›์€ ์•„์ด๊ธฐ์Šค ๊ตฐ์‚ฌ ๊ธฐ์ง€์— ์ง‘์ค‘๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— A ๋‚˜๋ผ๋Š” B ๋‚˜๋ผ์˜ ์•„์ด๊ธฐ์Šค ๊ตฐ์‚ฌ ๊ธฐ์ง€์— ์œต๋‹จํญ๊ฒฉ์„ ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

A ๋‚˜๋ผ์˜ ๊ณต๊ฒฉ์— ๋Œ€ํ•ญํ•˜์—ฌ ์•„์ด๊ธฐ์Šค ๊ตฐ์‚ฌ ๊ธฐ์ง€์—์„œ๋Š” ๋ฌด์ˆ˜ํžˆ ์Ÿ์•„์ง€๋Š” ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ๋“ค์„ ์š”๊ฒฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ณณ์—๋Š” ๋ฐฑ๋ฐœ๋ฐฑ์ค‘์„ ์ž๋ž‘ํ•˜๋Š” ์š”๊ฒฉ ์‹œ์Šคํ…œ์ด ์žˆ์ง€๋งŒ ์šด์šฉ ๋น„์šฉ์ด ์ƒ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ์‚ฌ์ผ์„ ์ตœ์†Œ๋กœ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋“  ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์„ ์š”๊ฒฉํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

A ๋‚˜๋ผ์™€ B ๋‚˜๋ผ๊ฐ€ ์‹ธ์šฐ๊ณ  ์žˆ๋Š” ์ด ์„ธ๊ณ„๋Š” 2 ์ฐจ์› ๊ณต๊ฐ„์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. A ๋‚˜๋ผ๊ฐ€ ๋ฐœ์‚ฌํ•œ ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์€ x ์ถ•์— ํ‰ํ–‰ํ•œ ์ง์„  ํ˜•ํƒœ์˜ ๋ชจ์–‘์ด๋ฉฐ ๊ฐœ๊ตฌ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ์Œ (s, e) ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. B ๋‚˜๋ผ๋Š” ํŠน์ • x ์ขŒํ‘œ์—์„œ y ์ถ•์— ์ˆ˜ํ‰์ด ๋˜๋„๋ก ๋ฏธ์‚ฌ์ผ์„ ๋ฐœ์‚ฌํ•˜๋ฉฐ, ๋ฐœ์‚ฌ๋œ ๋ฏธ์‚ฌ์ผ์€ ํ•ด๋‹น x ์ขŒํ‘œ์— ๊ฑธ์ณ์žˆ๋Š” ๋ชจ๋“  ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์„ ๊ด€ํ†ตํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์š”๊ฒฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ๊ฐœ๊ตฌ๊ฐ„ (s, e)๋กœ ํ‘œํ˜„๋˜๋Š” ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์€ s์™€ e์—์„œ ๋ฐœ์‚ฌํ•˜๋Š” ์š”๊ฒฉ ๋ฏธ์‚ฌ์ผ๋กœ๋Š” ์š”๊ฒฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์š”๊ฒฉ ๋ฏธ์‚ฌ์ผ์€ ์‹ค์ˆ˜์ธ x ์ขŒํ‘œ์—์„œ๋„ ๋ฐœ์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์˜ x ์ขŒํ‘œ ๋ฒ”์œ„ ๋ชฉ๋ก targets์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์„ ์š”๊ฒฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์š”๊ฒฉ ๋ฏธ์‚ฌ์ผ ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  •  1 ≤ targets์˜ ๊ธธ์ด ≤ 500,000
  • targets์˜ ๊ฐ ํ–‰์€ [s,e] ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
    • ์ด๋Š” ํ•œ ํญ๊ฒฉ ๋ฏธ์‚ฌ์ผ์˜ x ์ขŒํ‘œ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๊ฐœ๊ตฌ๊ฐ„ (s, e)์—์„œ ์š”๊ฒฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • 0s < e ≤ 100,000,000

์ž…์ถœ๋ ฅ ์˜ˆ


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

import Foundation

func solution(_ targets:[[Int]]) -> Int {
    let targets = targets.sorted { $0[1] < $1[1] }
    var targetSize = 0
    var count = 0
    for i in 0..<targets.count {
        if targets[i][0] >= targetSize {
            targetSize = targets[i][1]
            count += 1
        }
    }
    return count
}

// targets์˜ ๊ฐ ๋ฐฐ์—ด 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์žฌ์ •๋ ฌ.
// target๋“ค์ด ๊ฒน์น˜๋Š”์ง€ ๋น„๊ตํ•˜๊ธฐ์œ„ํ•ด targetSize๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด
// targets๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์•ž ํƒ€๊ฒŸ์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค(targetSize) ๋ณด๋‹ค
// ํ˜„์žฌ target์˜ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๊ฐ€ ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด
// targetSize์— ํ˜„์žฌ target์˜ 0๋ฒˆ์งธ๋ฅผ ํ• ๋‹นํ•˜๊ณ , count += 1