알고리즘 C++

최댓값 만들기 (2) (Programmers) 문제 풀이 🤔

minsoungdev 2026. 7. 30. 23:37

안녕하세요. 박민성입니다. 

 

오늘은 최댓값 만들기 (2)라는 문제를 풀어볼 겁니다.

 

입력은

정수 배열이 주어집니다.

 

출력은

입력에서 들어온 배열 중에 두 원소 곱이 가장 높은 값을 리턴합니다.

 

이 문제를 보고 예전에 백준 풀었던 것이 생각났습니다.

백준에도 이 문제와 비슷한 문제가 있었던걸로 기억하여 어떻게 풀지 생각해보다가

처음에는 이중 for문을 사용해서 Max 값을 비교해보며 할 생각도 있었지만 너무 비효율적이라고 판단되어

다른 방법을 생각해보다가 배열을 정렬하고 가장 높은 두 원소를 곱하면 되지 않을까 생각했습니다.

 

sort를 쓰기 위해서 <algorithm>  을 include해줍니다.

매개변수로 들어온 numbers를 정렬해줍니다. 

 

그러고 마지막 원소 2개를 곱해서 보내주면 됩니다.

 

하지만 이것은 틀렸습니다.

첫번째 testCase를 보시면 -3, -5를 곱하면 4, 2를 곱한 8보다 더 높으니 정답은 8이 아닌 15가 됩니다.

그렇기 때문에 정렬을 했다면 가장 큰 두 원소 곱 말고도 가장 작은 두 원소도 곱해서

그 중에서 가장 큰 수를 리턴해야 합니다.

 

<algorithm> 헤더에 있는 max를 사용하여 -, - 곱이랑 +, + 곱 중에 비교해서 둘 중 더 큰 값을 리턴하게 합니다.

 

전체 코드입니다.

 

사실 Programmers 문제 풀이를 블로그에 쓰면서 이게 의미가 있나...? 너무 날먹 아닌가...? 라는 생각이 들곤 합니다.

그러므로 정말 난이도 있는 문제를 풀이하던가 아니면 문법 공부 내용이나 갠프 근황을 빈도를 높여야 겠다는 생각을 했습니다.

 

내일은 더욱 알차게 보내고 작성해보도록 하겠습니다. 

봐주셔서 감사합니다. ☺️