[프로그래머스 / C++] 최대값과 최솟값

YH·2023년 12월 19일
0

문제

최대값과 최솟값 : 문제 링크


문제 분석

  • 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 된다.

  • 제한 사항

  • s에는 둘 이상의 정수가 공백으로 구분되어 있다.
  • 벡터내의 최소, 최대값을 찾기위해 min_element(), max_element() 함수를 사용하므로 algorithm 헤더를 include. 최소값과 최대값을 저장할 문자열 answer, 숫자를 임시로 저장할 문자열 tmp를 초기화. 문자 형태의 숫자를 정수로 변환하여 저장할 정수형 벡터 v를 초기화. for loop를 통해 문자열 첫번째부터 마지막 원소까지 순환하고 if문을 통해 공백을 만나면 tmp에 저장된 문자열을 정수화하여 v에 저장 후 tmp 초기화. 공백이 아닐경우 else문을 사용하여 문자를 tmp에 저장. loop 탈출 후, 마지막으로 저장된 tmp를 v에 저장. to_string() 및 min_element() 함수를 사용하여 벡터 v에서 가장 작은 수를 문자로 변환하여 answer에 저장하고, 공백을 저장. 마찬가지로 to_string() 및 max_element() 함수를 사용하여 벡터 v에서 가장 큰 수를 문자로 변환하여 answer에 저장 후, 최종적으로 저장된 answer을 return

algorithm 헤더의 min_element() 함수 사용법
*min_element(v.begin(), v.end()); =>벡터 v에서 최소값을 return
min_element(v.begin(), v.end()) - v.begin(); => 벡터 v에서 최소값의 인덱스를 return

algorithm 헤더의 max_element() 함수 사용법
*max_element(v.begin(), v.end()); => 벡터 v에서 최대값을 return
max_element(v.begin(), v.end()) - v.begin(); => 벡터 v에서 최대값의 인덱스를 return


풀이

#include <vector>
#include <string>
#include <algorithm>

using namespace std;

string solution(string s) {
    string answer = "", tmp = "";
    vector<int> v;
    
    for(int i = 0; i < s.size(); ++i) {
        if(s[i] == ' ') {
            v.push_back(stoi(tmp));
            tmp = "";
        }
        else tmp += s[i];
    }
    v.push_back(stoi(tmp));
    
    answer += to_string(*min_element(v.begin(), v.end()));
    answer += ' ';
    answer += to_string(*max_element(v.begin(), v.end()));
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글