본문 바로가기

알고리즘

[프로그래머스]Lv0. 최댓값 만들기

본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+  Java언어 내용도 포함되어있습니다. )

https://school.programmers.co.kr/learn/courses/30/lessons/120847

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1.문제설명

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

 

2. 문제해결 접근

  • 배열안의 값 중, 최대값을 만들기 위해서는, 가장큰 값과, 그 다음 큰 값의 곱으로 구할 수 있다.
  • Arrays 클래스의 sort를 이용하여 배열 값을 정렬후
  • 최대값이 위치할 가장 마지막 인덱스와 그 이전의 인덱스의 곱으로 최대값을 구할 수 있을것 같다.

 

3.답안 : [언어 : java ]

import java.util.Arrays;

class Solution {
    public int solution(int[] numbers) {

        int[] arr = numbers;
		int num1 = 0;
		int num2 = 0;
		
		Arrays.sort(arr);
		
		for (int i = 0; i < arr.length; i++) {
			System.out.println( arr[i] );
		}
		
		num1 = arr[arr.length-1];
		num2 = arr[arr.length-2];
		
		System.out.println( num1 );
		System.out.println( num2 );
        return num1*num2;
    }
}

 


 

4. C++ 답안

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> numbers) {
    sort(numbers.begin(), numbers.end());
    int n = numbers.size();
    
    return numbers[n-1] * numbers[n-2];
}

 

5. C++ 문법 설명과 표현법

5_1) vector의 begin(),  end()

vector의 sort()는 <algorithm>라이브러리에 포함되어있어 값을정렬해주는 함수이다.

sort(정렬시작 인덱스, 정렬 마지막 인덱스)

이때. 시작 인덱스와 마지막 인덱스를 반환하는 함수는

begin()과 end()를 사용하여 정렬할 수 있다.

 

 

https://swblossom.tistory.com/26

 

[C++] 벡터(vector)와 메소드들(push_back, front, back, begin, end)

표준 템플릿 라이브러리(STL : Standard Template Library) 안에 컨테이너(container), 이터레이터(iterator), 알고리즘(algorithm)템플릿 등을 제공한다. 컨테이너는 배열과 같이 여러 개의 값을 저장할 수 있는..

swblossom.tistory.com