Search
Duplicate
🙆🏻‍♀️

ATM

주차
14
문제번호
11399
언어
C++
티어
실버
유형
그리디
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

메모리

시간

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가지 종류의 정렬로 구현해 보았다.