728x90
programmers.co.kr/learn/courses/30/lessons/12941
def solution(A,B):
answer = 0
A.sort()
B.sort()
for i in range(len(A)):
answer += A[i]*B[len(B)-1-i]
return answer
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// A_len은 배열 A의 길이입니다.
// B_len은 배열 B의 길이입니다.
int compare(const int *a, const int*b){
return *a>*b?1:-1;
}
int solution(int A[], size_t A_len, int B[], size_t B_len) {
int answer = 0;
qsort(A, A_len,sizeof(int),compare);
qsort(B, B_len,sizeof(int),compare);
for (int i=0; i < A_len; i++){
// printf("%d %d\n", A[i],B[B_len-1-i]);
answer += A[i]*B[B_len-1-i];
}
return answer;
}
타인의 코드를 가져왔다.
파이썬과 C가 다르지 않은 코드이다.
C로 sort를 직접 작성해야하나 걱정했는데 stdlib.h에 qsort라는게 있었다.
정렬할 배열과, 길이, 원소당 크기, 비교함수를 넣어주면 된다.
비교함수는 각 원소마다 비교하면서 큰경우 1을 리턴하고 작거나 같은경우 -1 을 리턴하는데 1을 리턴하면 오름차순으로 변경한다. (원소가 같은경우 0을 리턴해야하는데 그냥 계산 조금더 해도 상관없어서 이렇게 사용한듯하다.)
ko.wikipedia.org/wiki/Stdlib.h
twpower.github.io/56-qsort-in-c
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] LEVEL2 문자열 압축, python (0) | 2021.04.04 |
---|---|
[프로그래머스] LEVEL2 삼각 달팽이, python, C (0) | 2021.04.04 |
[프로그래머스] 3진법 뒤집기, python, C (0) | 2021.04.02 |
[프로그래머스] 두개 뽑아서 더하기 python, C (0) | 2021.04.02 |
[프로그래머스] [3차] n진수 게임 python (0) | 2021.04.01 |