새소식

코딩테스트/프로그래머스

[Swift] 과일 장수

  • -

[문제]

코딩테스트 연습 - 과일 장수 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[문제 풀이]

반복문을 사용해서 간단하게 풀어보자!

Swift에서 sort 함수의 사용 방법은

배열이름.sort(by: >)

로 사용이 가능하다.

뒤에 있는 by를 사용안하면 기본 정렬인 오름차순으로 정렬이 되며 by : > 면 큰 숫자부터 내림차순으로 by : < 면 오름차순으로 정렬이 된다.

 

해당 문제는 정렬을 이용한 그리디 문제이다. 

사과가 4,4,4,3,3,3,2,2,2 가 있고 m이 4라면 (4,4,4,3), (3,3,2,2) 로 나눈 값과 (4,3,3,3), (4,4,2,2) 로 나눈 값이 모두 20으로 동일하다.

즉 정렬을 처음 한 뒤에 m번째 위치에 있는 숫자 * m 을 통해서 박스의 값을 알 수 있고 그걸 score 배열을 벗어나기 전까지 반복한 값을 더하면 정답이 된다.

[회고]

.

[코드]

import Foundation

func solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int {
    var answer = 0
    var scores = score
    scores.sort(by: >)
    
    var start = m - 1
    while start < scores.count {
        answer += scores[start] * m
        start += m
    }
    
    return answer
}

 

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[Swift] 신고 결과 받기  (0) 2023.08.14
[C++] 신고 결과 받기  (0) 2023.08.14
[Swift] 달리기 경주  (0) 2023.08.12
[C++] 달리기 경주  (0) 2023.08.12
[Swift] 피로도  (0) 2023.08.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.