본문 바로가기

프로그래머스

[C언어/프로그래머스 레벨0]-최댓값 만들기(2)

728x90

문제 설명


정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

제한사항


-10,000 ≤ numbers의 원소 ≤ 10,000
2 ≤ numbers 의 길이 ≤ 100


입출력 예


[     numbers                                     result ]
[1, 2, -3, 4, -5]                                      15     ]
[0, -31, 24, 10, 1, 9]                          240   ]
[10, 20, 30, 5, 5, 20, 5]                    600   ]


입출력 예 설명


입출력 예 #1


두 수의 곱중 최댓값은 -3 * -5 = 15 입니다.

입출력 예 #2


두 수의 곱중 최댓값은 10 * 24 = 240 입니다.

입출력 예 #3


두 수의 곱중 최댓값은 20 * 30 = 600 입니다.

[소스코드]

#include <stdio.h>

int solution(int numbers[], size_t numbers_len) {
    int answer = 0,max=-100000000,sum=0;
    //max의 값 주의.
    for(int i=0;i<numbers_len;i++){
       for(int j=0;j<numbers_len;j++){     
         if(i!=j){
         
            sum=numbers[i]*numbers[j];
        
         if(max<=sum){
            max=sum;
            }
             
          }
         }  
        }
    
    answer=max;
    
  
    return answer;
}


두 수를 곱하여 max값을 구하면 되는 간단한 문제.
주의할 점은 max의 값인데, numbers의 범위가 -10000~10000다. 예를 들어서 numbers는
-10000,10000 으로 이루어진 배열이라 가정하면
최댓값은 -100000000이된다.
따라서 max=-100000000가 된다. 범위를 제대로 안적으면 예제 7번을 풀수없다.