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형으로 바꾸어 반환합니다.