728x90
๋ฐ์ํ

Problem
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ
[2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3
programmers.co.kr
Solution
ํด๋น ๋ฌธ์ ๋ ์ด์งํ์์ผ๋ก ํ์ด์ผ ํ๋ ๋ฌธ์ ์ ๋๋ค.
1. stones์ ์ซ์๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ ๋ค ์ค๋ณต ์ซ์๋ฅผ ์ ๊ฑฐํ๋ค.
stones๋ฅผ Set๋ก ๋ง๋ค๊ณ sorted ๋ฉ์๋๋ก ์ ๋ ฌํด์ค๋๋ค. (sort๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค.)
(ex [1,1,5,3,2,2] -> [1,2,3,5])
2. ๊ฑด๋ ์ ์๋์ง ์๋์ง ์ฒดํฌํฉ๋๋ค.
0์ดํ์ ์ซ์์ ์ฐ์๋ ๊ฐฏ์๊ฐ k๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฌ๋ค๋ฉด ๊ฑด๋ ์ ์๋ ์ง๊ฒ๋ค๋ฆฌ์ ๋๋ค.
(ex [-1, 0, -2, 1, 0] -> ์ฐ์๋ 0์ดํ ๊ฐฏ์๋ 3)
3. sort๋ฅผ ์ด์งํ์
์ด์ง ํ์์ผ๋ก sort์์ ์ซ์ ์ค ๊ฑด๋ ์ ์๋ ๊ฐ์ฅ ์ต๋์ ๊ฐ์ ์์๋ ๋๋ค.
Source Code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
func solution(_ stones:[Int], _ k:Int) -> Int { | |
return binarySearch(stones: stones,k: k) | |
} | |
func binarySearch(stones:[Int],k:Int) -> Int { | |
let sort = Set(stones).sorted() | |
var maxCount:Int = 0 | |
var min = 0 | |
var max = sort.count | |
while min <= max { | |
let mid = (min + max) / 2 | |
let newStones = stones.map{$0 - sort[mid]} | |
if !isCrossable(stones: newStones, k: k) { | |
maxCount = mid | |
max = mid - 1 | |
} else { | |
min = mid + 1 | |
} | |
} | |
return sort[maxCount] | |
} | |
func isCrossable(stones:[Int],k:Int) -> Bool { | |
var counts = Array(repeating: 0, count: stones.count) | |
for (i,stone) in stones.enumerated() { | |
if stone < 1 { | |
counts[i] = i == 0 ? 1 : counts[i-1] + 1 | |
} | |
if counts[i] == k { | |
return false | |
} | |
} | |
return true | |
} |
728x90
๋ฐ์ํ
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] 2020 KAKAO INTERNSHIP ๋ณด์ ์ผํ (0) | 2021.08.04 |
---|---|
[Swift] 2020 KAKAO BLIND RECRUITMENT ๋ธ๋ก ์ด๋ํ๊ธฐ (0) | 2021.08.03 |
[Swift] 2021 KAKAO INTERNSHIP ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด (0) | 2021.07.18 |
[Swift] 2021 KAKAO INTERNSHIP ํํธ์ง (0) | 2021.07.18 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง 2 2๊ฐ ์ดํ๋ก ๋ค๋ฅธ ๋นํธ (0) | 2021.07.03 |
๋๊ธ