프로그래밍/코딩 문제 풀이
프로그래머스 2023.08.31 (2Lv 최댓값과 최솟값)
Rozentea
2023. 8. 31. 16:06
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
문제 설명
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
제한 조건
◈ s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
입출력 예
s return "1 2 3 4" "1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1" "-1 -1"
코딩
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
string strNum = "";
bool bfirst = true;
bool bEnd = false;
int iminnum = 0;
int imaxnum = 0;
while (!s.empty())
{
if (s.find(" ") == string::npos)
{
bEnd = true;
}
if (!bEnd)
{
strNum = string(s.begin(), s.begin() + s.find(" "));
s.erase(s.begin(), s.begin() + s.find(" ") + 1);
}
else
{
strNum = string(s.begin(), s.end());
s.erase(s.begin(), s.end());
}
if (bfirst)
{
iminnum = stoi(strNum);
imaxnum = stoi(strNum);
bfirst = false;
}
else
{
iminnum = min(iminnum, stoi(strNum));
imaxnum = max(imaxnum, stoi(strNum));
}
}
answer += to_string(iminnum);
answer += " ";
answer += to_string(imaxnum);
return answer;
}