www.acmicpc.net/problem/11399

 

11399번: ATM

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

www.acmicpc.net

설탕 배달 문제 보다는 쉬워보였다.

 

1. n을 입력받는다.

2. n만큼의 배열을 생성한다.

3. for문을 통해 배열의 값을 넣어준다.

4. 정렬 알고리즘을 이용해 최소가 되게끔 오름차순 정렬한다.

5. 여기서 코드를 어떻게 짜야할지 생각하는 도중 첫번째 값은 n만큼 더해지고 두번째 값은 n-1만큼 더해진다는 규칙을 찾았다!

 

package test;

import java.util.Scanner;

public class test {

	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		int n = sc.nextInt();
		int time[] = new int[n];
		int tmp = 0;
		int nn = n;
		int sum =0;
		
		for(int i=0;i<n;i++) {
			time[i] = sc.nextInt();
		}
		sc.close();
		
		for(int i =0;i<n-1;i++) {
			for(int j =i+1; j<n;j++) {
				if(time[i]>time[j]) {
					tmp = time[i];
					time[i]=time[j];
					time[j]=tmp;
				}
			}
		}
		for(int i=0;i<n;i++) {
			sum += time[i]*nn;
			nn--;
		}
		System.out.println(sum);
	}
}

 

혼자만의 힘으로 짠 코드인데 일단 ...

정답을 맞추긴 했지만 구글링을통해 다른사람들의 코드를 보고 내 코드와 다른점이 무엇일까 궁금해졌다!

 

Array.sort() 를 쓰면 정렬을 해주는 라이브러리가 있었다.. 하지만 있다는 것만 알아두고 공부하는 단계에서는 쓰지 않는 것이 좋다고 생각된다! 프로그래밍 적 사고를 많이 해야 실력에 도움이 될것같기 때문..

 

+ Recent posts