메모리
시간
1116 KB
0 ms
c++ selecting_sort
#include <cstdio>
#include <algorithm>
using namespace std;
void selecting_sort(int arr[], int n)
{
int result = 0;
for(int i = 0 ; i < n - 1 ; i++)
{
for (int j = i + 1 ; j < n ; j++)
{
if(arr[i] > arr[j])
swap(arr[i], arr[j]);
}
}
for (int i = 1; i < n; i++)
arr[i] += arr[i - 1];
for (int i = 0; i < n; i++)
result += arr[i];
printf("%d", result);
}
int main()
{
int n;
scanf("%d", &n);
int atm[n];
for (int i = 0; i < n; i++)
scanf("%d", &atm[i]);
selecting_sort(atm, n);
return 0;
}
C++
복사
메모리
시간
1120 KB
0 ms
c++ Counting_Sort
#include <cstdio>
using namespace std;
int N_Arr[1000] = {0,};
void Counting_Sort(int n, int atm[], int maxval)
{
int arr[maxval + 1] = {0,};
for (int i = 0; i < n; i++)
arr[atm[i]]++;
for (int i = 1; i <= maxval; i++)
arr[i] = arr[i] + arr[i - 1];
for (int i = 0; i < n; i++)
{
arr[atm[i]]--;
N_Arr[arr[atm[i]]] = atm[i];
}
}
int main()
{
int n;
scanf("%d", &n);
int atm[n];
int result = 0;
int max = 0;
for (int i = 0; i < n; i++)
scanf("%d", &atm[i]);
for (int i = 0; i < n; i++)
{
if (atm[i] > max)
max = atm[i];
}
Counting_Sort(n, atm, max);
for (int i = 1; i < n; i++)
{
N_Arr[i] += N_Arr[i - 1];
}
for (int i = 0; i < n; i++)
result += N_Arr[i];
printf("%d", result);
return 0;
}
C++
복사
메모리
시간
121220 KB
120 ms
python Code
n = int(input())
a = list(map(int, input().split()))
result = 0
a.sort()
for i in range(1,n):
a[i] += a[i - 1]
for i in range(n):
result += a[i]
print(result)
Python
복사
문제 풀이
주어진 배열을 정렬한 뒤 이전 인덱스값을 더해 저장한뒤 모든 인덱스 값을 더해 출력하는 문제이다.
파이썬을 한번 사용해보고 싶어 sort() 함수를 사용해서 풀이해보았고 c++로 Counting_Sort와 selecting_sort 2가지 종류의 정렬로 구현해 보았다.