λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“– Problem Solution/Programmers

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ λ””μŠ€ν¬ 컨트둀러 Swift

by Fomagran πŸ’» 2021. 1. 18.
728x90
λ°˜μ‘ν˜•

Source Code

import Foundation
func solution(_ jobs:[[Int]]) -> Int {
//ν˜„μž¬ μ‹œκ°„μ„ μ €μž₯ν•  λ³€μˆ˜
var time = 0
//전체 길이λ₯Ό μ €μž₯ν•  λ³€μˆ˜
var total = 0
//jobsλ₯Ό μ†Œμš”μ‹œκ°„μœΌλ‘œ μ •λ ¬ν•΄μ€€λ‹€.
var jobsSort = jobs.sorted(by: {$0[0] == $1[0] ? $0[1] < $1[1] : $0[0] < $1[0] })
//μ†Œμš”μ‹œκ°„μœΌλ‘œ μ •λ ¬λœ jobsλ₯Ό μš”μ²­μ‹œκ°„μœΌλ‘œ μ •λ ¬ν•΄μ€€λ‹€.
jobsSort.sort(by: {$0[1] == $1[1] ? $0[0] < $1[0] : $0[1] < $1[1]})
//μ •λ ¬λœ jobsκ°€ 0보닀 ν΄λ•Œλ§Œ
while jobsSort.count > 0 {
//μ •λ ¬λœ jobs의 길이만큼 순회
for i in 0..<jobsSort.count {
//λ§Œμ•½ μ •λ ¬λœ jobs의 μš”μ²­μ‹œκ°„μ΄ ν˜„μž¬ μ‹œκ°„λ³΄λ‹€ μž‘κ±°λ‚˜ κ°™λ‹€λ©΄
if jobsSort[i][0] <= time {
//ν˜„μž¬ μ‹œκ°„μ— i번째 μ†Œμš”μ‹œκ°„μ„ 더해쀀닀.
time += jobsSort[i][1]
//전체 길이에 μ‹œκ°„μ—μ„œ μš”μ²­μ‹œκ°„μ„ λΊ€λ§ŒνΌμ„ 더해쀀닀.
total += time - jobsSort[i][0]
//i번째λ₯Ό μ‚­μ œν•΄μ€€λ‹€.
jobsSort.remove(at: i)
break
}
//λ§Œμ•½ 아무것도 μ‚­μ œκ°€ μ•ˆλ˜μ—ˆλ‹€λ©΄
if i == jobsSort.count - 1 {
//ν˜„μž¬ μ‹œκ°„μ— 1을 더해쀀닀.
time += 1
}
}
}
//μ „μ²΄κΈΈμ΄μ—μ„œ jobs의 수만큼 λ‚˜λˆ μ€€κ²ƒμ„ λ°˜ν™˜ν•΄μ€€λ‹€.
return total/jobs.count
}

 


Solution

κ°€μž₯ 짧게 평균을 ν˜•μ„±ν•˜λ €λ©΄ 기본적으둜 μ†Œμš”μ‹œκ°„μ΄ μž‘μ€ 것듀이 λ¨Όμ € μ˜€λ„λ‘ μ •λ ¬ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

 

ν•˜μ§€λ§Œ 이 λ¬Έμ œμ—μ„œ μž‘μ—…μ΄ μˆ˜ν–‰λ˜κ³  μžˆμ§€ μ•Šμ„ λ•ŒλŠ” λ¨Όμ € μš”μ²­μ΄ λ“€μ–΄μ˜¨ μž‘μ—…λΆ€ν„° μ‹€ν–‰ν•΄μ•Ό ν•œλ‹€.

 

고둜 μž‘μ—…μ΄ μˆ˜ν–‰λ˜μ§€ μ•Šμ„ λ•ŒλŠ” μš”μ²­μ‹œκ°„μ΄ κ°€μž₯ 적은 것을 μž‘μ—…μ΄ μˆ˜ν–‰λ˜κ³  μžˆμ„ λ•ŒλŠ” μ†Œμš”μ‹œκ°„μ΄ μž‘μ€ 것을 μ‹€ν–‰ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

 

μœ„μ™€ 같이 μ •λ ¬ν•΄μ£Όλ €λ©΄ λ¨Όμ € μ†Œμš”μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ λ¨Όμ € μ •λ ¬ν•΄μ£Όκ³  κ·Έ μ •λ ¬ν•΄μ€€ 것을 기반으둜 μš”μ²­μ‹œκ°„μœΌλ‘œ λ‹€μ‹œ μ •λ ¬ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

 

κ·Έ λ‹€μŒ μ •λ ¬λœ μž‘μ—…λ“€μ„ μˆœνšŒν•˜λ©° 쑰건에 λ§žλŠ” μž‘μ—…μ„ ν•˜λ‚˜μ”© μ§€μ›Œκ°€μ€€λ‹€.


Problem

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - λ””μŠ€ν¬ 컨트둀러

ν•˜λ“œλ””μŠ€ν¬λŠ” ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ μž‘μ—…λ§Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ””μŠ€ν¬ 컨트둀러λ₯Ό κ΅¬ν˜„ν•˜λŠ” 방법은 μ—¬λŸ¬ 가지가 μžˆμŠ΅λ‹ˆλ‹€. κ°€μž₯ 일반적인 방법은 μš”μ²­μ΄ λ“€μ–΄μ˜¨ μˆœμ„œλŒ€λ‘œ μ²˜λ¦¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό

programmers.co.kr

 

728x90
λ°˜μ‘ν˜•

λŒ“κΈ€