코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

알고리즘/백준

13164번 : 행복 유치원

2022. 9. 8. 15:02

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

 

13164번: 행복 유치원

행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에 속한 원생들은 서로

www.acmicpc.net

 

 

문제

 

 

코드

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        int arr[] = new int[n-1];
        st = new StringTokenizer(br.readLine(), " ");
        
        int pre = Integer.parseInt(st.nextToken());
        int cur = 0;
        for (int i=0;i<n-1;i++) {
            cur = Integer.parseInt(st.nextToken());
            arr[i] = cur-pre;
            pre = cur;
        }

        Arrays.sort(arr);
        long result = 0;
        
        //조가 k개면 k-1개 버릴 수 있으므로, 작은 값부터 결과값에 더한다.
        for (int i = 0; i < arr.length - (k - 1); i++) {
            result+=arr[i];
        }
        System.out.println(result);
    }
}

 

 

해결방법

조마다 티셔츠를 맞추는 비용은 "조에서 가장 키가 큰 원생과 가장 키가 작은 원생의 키 차이만큼 든다."라고 나와있다. 

어떻게 풀지 계속 고민하였다. 모든 경우의 수를 찾는 것은 아닌 것 같아서 메모장에 끄적여보다가 해결방법을 찾았다.

옆 사람과의 키 차이를 저장한 뒤, 그 차이에서 큰 순서대로 K-1개를 제외하고 나머지를 더해주면 문제는 해결된다.

K-1개를 제외하는 이유는 K-1개의 조를 만들면 결국 K개의 조가 생기기 때문이다. 이때, "제외하다"는 제외시킨 사람 혼자 조를 형성한다는 의미이다. 조가 없다면 결국 다 더해져야 하는 값이기에 그중 큰 값 K-1개를 빼면 최솟값이 되는 것이다.

 

input

7 3
1 3 5 6 7 8 10  
 2 2 1 1 1  2    => 옆 사람과의 키 차이에서 큰 순서대로 (3-1)개 제외하여 티셔츠 맞추기

 

'알고리즘 > 백준' 카테고리의 다른 글

2437번 : 저울  (0) 2022.09.15
1697번 숨바꼭질  (0) 2022.09.13
15903번 : 카드 합체 놀이  (0) 2022.09.07
1448번 : 삼각형 만들기  (0) 2022.09.07
7795번 : 먹을 것인가 먹힐 것인가  (0) 2022.08.31
    '알고리즘/백준' 카테고리의 다른 글
    • 2437번 : 저울
    • 1697번 숨바꼭질
    • 15903번 : 카드 합체 놀이
    • 1448번 : 삼각형 만들기
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바