반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 "백준 BOJ - 11399 ATM" 문제를 풀었습니다.


 

Github

 

GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

github.com

 

문제 링크

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

 


풀이

이번 문제는 그리디 문제입니다.

 

매 선택마다 최저 시간을 뽑는 것이 최적이 되기 때문입니다.

따라서 input을 오름차순으로 정렬해야 합니다.

그후 걸리는 시간을 계산하여 합을 구해주면 됩니다.

 


전체 코드


      
//11399 ATM
import Foundation
let count = Int(readLine()!)!
var times: [Int] = readLine()!.split { $0 == " " }.map { Int(String($0))! }.sorted()
(1..<times.count).forEach { times[$0] += times[$0-1] }
print(times.reduce(0, +))

아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

 

 

반응형
유정주