728x90
programmers.co.kr/learn/courses/30/lessons/12941
코딩테스트 연습 - 최솟값 만들기
길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱
programmers.co.kr
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
stdlib.h - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. stdlib.h는 C 언어의 표준 라이브러리로, 문자열 변환, 사 난수 생성, 동적 메모리 관리 등의 함수들을 포함하고 있다. 함수 설명 문자열 변환 int atoi ( const char * str
ko.wikipedia.org
twpower.github.io/56-qsort-in-c
[C] C언어에서 qsort 사용하기
Practice makes perfect!
twpower.github.io
'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 |