https://www.acmicpc.net/problem/11399
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
분류 : 그리디
1대의 ATM에서 돈을 인출하는데 N명의 사람들이 줄을 서있고,
모든 사람들이 돈을 인출하는데 걸리는 최소 시간을 구하는 문제입니다.
test case는 아래와 같습니다.
5 << 사람의 수
3 1 4 3 2 << 각 사람이 돈을 뽑는데 걸리는 시간
#include <iostream>
#include <algorithm>
using namespace std;
void main()
{
int a=0;
cin >> a;
int arr[1000];
for (int i = 0; i < a; i++) {
cin >> arr[i];
}
sort(arr, arr+a);
//cout << arr[0] << endl;
int cnt = 0;
for (int j = 0; j < a; j++) {
int tmp = 0;
for (int k = 0; k <= j; k++) {
tmp += arr[k];
}
cnt += tmp;
}
cout << cnt << endl;
}
처음으로 c++을 사용해서 푼 비교적 쉬운 문제였습니다.
인출하는데 걸리는 시간이 짧은 사람을 먼저 업무를 보도록
algorithm 헤더 파일을 include 해서 sort() 함수를 사용합니다.
sort함수는 2가지 인자를 넣어야 합니다.
첫 번째 인자에는 시작지점, 두 번째 인자에는 끝지점을 넣으면 됩니다.
첫번째 인자에는 배열의 포인터가 들어가고, 두번째 인자에는 배열의 포인터 + 배열의 크기를 더하면
오름차순으로 정렬됩니다.

하지만 이대로 제출을 하면 에러가 납니다.

왜 그런가 하니, 알고리즘 사이트의 문제 채점 컴파일러는 gcc를 사용하는데
비주얼 스튜디오에서는 vs c++ 컴파일러를 사용하기 때문입니다.
채점 사이트와 같은 환경에서 컴파일하고 싶으면 http://ideone.com에서 컴파일하면 됩니다.
Ideone.com
Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.
ideone.com
상기의 코드를 실행하면 아래의 오류 메시지가 나옵니다.

main함수는 반드시 return값을 줘야 하나 봅니다.
그러니 귀찮더라도 main함수의 return값을 줍시다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(void)
{
int a=0;
cin >> a;
int arr[1000];
for (int i = 0; i < a; i++) {
cin >> arr[i];
}
sort(arr, arr+a);
//cout << arr[0] << endl;
int cnt = 0;
for (int j = 0; j < a; j++) {
int tmp = 0;
for (int k = 0; k <= j; k++) {
tmp += arr[k];
}
cnt += tmp;
}
cout << cnt << endl;
return 0;
}
'etc. > BOJ' 카테고리의 다른 글
[BOJ] 21609 상어 중학교 - Java (0) | 2023.03.24 |
---|---|
[BOJ] 17142 연구소 3 - Java (0) | 2023.03.09 |
백준 10989번 수 정렬하기 3 (0) | 2021.08.03 |
백준 1152번 단어의 개수 (0) | 2021.07.23 |
백준 10818번 최소,최대 (0) | 2019.09.24 |