programmers

[Programmers]연습문제>최댓값과 최솟값 + C++ <string>라이브러리 Stoi

윤만석 2022. 9. 15. 11:03

문제 설명

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

 

프로그래머스 level2 문제입니다

s를 인덱스별로 접근해서 숫자가 나오는지, 음의 부호가 나오는지, 공백이 나오는지 구분해서 공백이 나올때마다 수를 저장합니다.

<algorithm>으로 maxelement 와 minelement를 붙여 출력합니다.

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string solution(string s) {
    string answer = "",num="";
    bool m=false;
    vector<int>arr;
    for(int i=0;i<s.length();i++){
        if (s[i]==' '){
             m?arr.push_back(-1*(stoi(num))):arr.push_back(stoi(num));
             num="";
             m=false;
        }
        else if(s[i]=='-'){
            m=true;
        }
        else{
            num.push_back(s[i]);
        }
    }
    m?arr.push_back(-1*(stoi(num))):arr.push_back(stoi(num));
    
    int MIN=*min_element(arr.begin(),arr.end());
    int MAX=*max_element(arr.begin(),arr.end());
    answer.append(to_string(MIN));
    answer.push_back(' ');
    answer.append(to_string(MAX));
    return answer;
}

string 라이브러리의

Stoi매소드함수는 String형을 Int형으로 바꾸어 반환합니다.