녕의 학습 기록

백준_11399 ATM (삽입정렬 & 구간합배열) 본문

Algorithm/Algorithm 문제

백준_11399 ATM (삽입정렬 & 구간합배열)

kjyyjk 2024. 1. 14. 17:00

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BJ_11399 {

    public static void main(String[] args) throws IOException {

        int n, i, j, index, sortNum, result;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        n = Integer.parseInt(br.readLine());

        StringTokenizer st = new StringTokenizer(br.readLine());

        int[] arr = new int[n];
        int[] sumArr = new int[n];

        for(i=0; i<n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        //선택정렬
        for(i=1; i<n; i++) {
            index = i;
            sortNum = arr[i];

            for(j=0; j<i; j++) { //삽입할 위치 찾기
                if(arr[j]+1 > sortNum) {
                    index = j;
                    break;
                }
            }

            if(index == i) { //삽입할 위치가 그대로라면 종료
                continue;
            } else {
                for(j=i; j>index; j--) { //삽입할 위치까지 뒤에서부터 shift
                    arr[j] = arr[j-1];
                }
                arr[index] = sortNum; //삽입
            }
        }

        //구간합배열 sumArr 이용
        sumArr[0] = arr[0];
        result = sumArr[0];

        for(i=1; i<n; i++) {
            sumArr[i] = sumArr[i-1] + arr[i];
            result += sumArr[i];
        }

        System.out.println(sb.append(result));
    }
}

 

 

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net