패스트터틀

(Baekjoon) GreedyAlgorithm - (1) ATM 본문

Algorithm/baekjoon

(Baekjoon) GreedyAlgorithm - (1) ATM

SudekY 2019. 11. 4. 15:21

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

 

11399번: ATM

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

www.acmicpc.net

 

작은순서부터 큰순서대로 나열해야만 최적의 순으로 계산되는것을 생각해보면 알수있다.

백준에서 안내하는 정확한 답은 알수없으나 구글에서 찾아본 결과 대부분의 사람들이 아래와같이

sort()를 사용하여 정렬을 하고 최적의 값을 result로 받아서 출력하는것으로 코드를 짰다.

 

sort()는 오름차순으로 정렬해주는 함수이며 java.util.Arrays.sort 부분에서 꺼내쓸수있다.

조건에 따라서 정렬의 순서를 바꿔줄수 있는 옵션들이 있다고 하니 궁금하다면 구글링으로 검색하길 바란다.

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


public class _11399 {

    public static void main(String[] args){

        try {

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int man = Integer.parseInt(br.readLine());
            StringTokenizer st = new StringTokenizer(br.readLine());
            int order[] = new int[man];
            for (int i = 0; i < man; i++)
                order[i] = Integer.parseInt(st.nextToken());
            Arrays.sort(order);
            int sum = 0;
            int result = 0;
            for (int i = 0; i < order.length; i++) {
                sum += order[i];
                result += sum;
            }
            System.out.println(result);

        } catch (IOException e) {
            e.printStackTrace();
        }
        

    
    }
}

나는 이 문제를 풀면서 시간이 꽤 오래걸렸다.

머리로는 이해가 가는데 내가 어느정도 까지 코딩을 해야하나의 감을 잃어버렸기 때문이다.

생각해보니 이 문제의 답을 보고 당황했던것이 "생각해보면" 이라는 과정까지 컴퓨터에게 구현을 해줘야하나까지 고민했다.

쉽게말해 나는 어떠한 숫자가 주어질경우 이것이 최적화된 정답을 유도하기 위해서 왜 정렬을 써야하는지의 근거까지 전부 프로그래밍으로 짜는 너무 터무니없이 깊게 인공지능시스템을 구현하려고 했다고 해야하나

여하튼 오랜만에 코딩해서 감을 잃었던것같다. 그래도 생각보다 난이도가 높다고 느껴지지는 않는다.

 

백준 제출 : 

런타임오류 5~7번정도 뜨고 드디어 제출하는법을 터득했다. 

Main을 써야하고 코드를 간단히 써야 런타임 오류가 안뜨는것같다.

 

 

https://github.com/sdk0213/baekjoon-study

 

sdk0213/baekjoon-study

solve a baekjoon question. Contribute to sdk0213/baekjoon-study development by creating an account on GitHub.

github.com

 

Comments