Uknow's Lab.
article thumbnail

https://www.acmicpc.net/problem/11508

 

11508번: 2+1 세일

KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두

www.acmicpc.net

 

난이도 : 실버 5
태그 : 그리디, 정렬

 

 

설명

3개를 사면 가장 싼 가격의 제품 하나를 무료로 줍니다.

그냥 단순히 내림차순으로 정렬 후,

가장 비싼 물품과 그 다음으로 비싼 물품을 산 뒤, 3번째로 비싼 물품을 공짜로 받고,

4번째로 비싼 물품과, 5번째로 비싼 물품을 산 뒤, 6번째로 비싼 물품을 꽁자로 받는 과정을 반복하여 풀 수 있을 것 같습니다.

 

 

 

소스코드

fun main() =
    print(Array(readln().toInt()) { readln().toInt() }
        .sortedDescending() // 내림차순 정렬
        .filterIndexed { i, _ -> i % 3 != 2 } // 3의 배수가 아닌 것만 필터링
        .sum()) // 필터링한 값들의 합 출력

 

저 같은 경우는 내림차순으로 정렬한 뒤,

해당 상품이 3의 배수번째가 아닌 것(인덱스는 0부터 시작하므로 i % 3 != 2로 작성)을 필터링하고,

해당 상품들의 가격의 총 합을 구하였습니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.