-
그리디- 큰 수의 법칙 / Swift프로그래밍/코딩테스트 2021. 5. 13. 17:04
이것이 취업을 위한 코딩테스트다 p.92
방법1 : 반복문으로 구하기
import Foundation let nmk = readLine()!.split(separator: " ").map { Int($0)! } var list = readLine()!.split(separator: " ").map { Int($0)! } let n = nmk[0], m = nmk[1], k = nmk[2] var passed = 0 var sum = 0 list.sort(by: >) while passed < m { passed += 1 if passed % k == 0 { sum += list[1] } else { sum += list[0] } } print(sum)
방법2 : 수열의 규칙성을 이용하여 실제 갯수를 구해버리기
import Foundation let nmk = readLine()!.split(separator: " ").map { Int($0)! } var list = readLine()!.split(separator: " ").map { Int($0)! } let n = nmk[0], m = nmk[1], k = nmk[2] var passed = 0 var sum = 0 list.sort(by: >) sum += (m / (k+1)) * (list[0] * k + list[1]) sum += (m % (k+1)) * list[0] print(sum)
반응형'프로그래밍 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 프린터 / Swift (0) 2021.05.21 [프로그래머스] 소수 찾기 (순열) / Swift (0) 2021.05.21 [프로그래머스] 조이스틱 / Swift (0) 2021.05.19 [프로그래머스] 기능 개발 / Swift (0) 2021.05.17 [실수 분석] 2021 카카오 인턴 3번, 문자열 (0) 2021.05.10