반응형
https://www.acmicpc.net/problem/11399
풀이
- 첫째 줄에 사람 수 입력받는다. 배열크기가 1000인people[1001]선언하기
- 사람 수만큼 시간의 값을 입력받는다
- 가장 최솟값을 가지게 하려면 배열이 오름차순으로 정렬되어야한다.
- 배열을 정렬해아 하기 때문에 정렬기법을 사용한다. 정렬의 기법을 매우 여러개지만 그 중 하나인 삽입 정렬 알고리즘을 사용하였다.
- 배열을 정렬한 후 이중 반복문을 통해 값을 더해나간다.
#include<stdio.h>
//삽입정렬 함수
void insertion_sort(int list[], int n) {
int i, j, key;
for (i = 1; i < n; i++) {
key = list[i];
for (j = i - 1; j >= 0 && list[j] > key; j--)
list[j + 1] = list[j];
list[j + 1] = key;
}
}
int main() {
int n;
int people[1001];
int sum = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int k;
scanf("%d", &k);
people[i] = k;
}
insertion_sort(people, n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++) {
sum += people[j];
}
}
printf("%d", sum);
}
c++을 사용해서 풀 시 c++에서 제공해주는 sort()함수를 사용하여 쉽게 정렬이 가능하다.
반응형
'백준' 카테고리의 다른 글
백준 2872번[c/c++] : 우리집엔 도서관이 있어 (0) | 2022.04.29 |
---|---|
백준 15903번[c++] : 카드 합체 놀이 (0) | 2022.04.28 |
백준 11047번[c언어] : 동전 0 (0) | 2022.04.27 |
백준 3053번[c언어] : 택시 기하학 (0) | 2022.03.22 |
백준 4153번 [c언어] : 직각삼각형 (0) | 2022.03.21 |
댓글