[코딩테스트 C++] ATM

후이재·2020년 10월 10일
1

오늘의 문제

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

ATM

나의 풀이

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int solution(int n, vector<int> p){
    int answer =0;
    sort(p.begin(), p.end());
    int sum = 0;
    for(int i=0;i<n;i++){
        sum += p[i];
        answer += sum;
    }
    return answer;
}

풀이 법

  • 대기문제가 굉장히 쉽게 나오면 이런식이구나 싶었음. 어렵게 내려면 줄 서는 시간, 등등 해서 스케줄링 알고리즘이 사용됨.
  • 이것도 일부긴 하지만, 평균시간을 최소화 하려면 짧은 스케쥴부터 먼저 처리해야한다는것은 이미 운영체제 수업에서 배웠음.
  • SJP인가 그거였던것 같기도 어쨌는 그런 증명된 로직을 사용하기 위해 소팅을 한 후, 제일 짧은것부터 더하면 된다. 끝

모범 답안

#include<stdio.h>
int main(){
	int i,n,j,p[1001],temp,sum=0;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%d",&p[i]);
	}
	for(int i=1; i<n;i++){
		for(int j=0; j<n-i; j++){
			if(p[j]>p[j+1]){
				int temp = p[j];
				p[j] = p[j+1];
				p[j+1]=temp;
			}
		}
	}
	for(int i=0; i<n ;i++){
		for(int j=0 ; j<=i ;j++){
			sum+=p[j];
		}
	}
	printf("%d",sum);
}

배울 점

  • 백준은 숏코딩이라는 부분이 있어서 그런지 사람들이 다 가독성 없는 코드를 짜는것 같다. 고르고 골라왔다.
profile
공부를 위한 벨로그

0개의 댓글