https://school.programmers.co.kr/learn/courses/30/lessons/120847?language=c
■ 문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
■ 제한사항
- 0 ≤ numbers의 원소 ≤ 10,000
- 2 ≤ numbers의 길이 ≤ 100
■ 나의 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// numbers_len은 배열 numbers의 길이입니다.
int solution(int numbers[], size_t numbers_len) {
int answer = 0;
for(int i=0; i<numbers_len-1; i++) {
for(int j=0; j<numbers_len-1-i; j++) {
if(numbers[j] < numbers[j+1]) {
answer = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = answer;
}
}
answer = numbers[0] * numbers[1];
}
return answer;
}
■ 코드해설
버블 정렬을 사용해 numbers[ ]을 내림차순 정렬을 해 numbers[0] (가장 큰 숫자)와 numbers[1] (두 번째로 큰 숫자)를 곱해준다.
■ 기타
버블 정렬 말고도 다른 정렬을 사용해 코드를 간단하게 정리할 수 있을 것 같다.