반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "백준 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, +))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형