알고리즘/프로그래머스 2단계
프로그래머스 - 최댓값과 최소값 - C++
게임만드는학생
2024. 7. 28. 15:30
https://school.programmers.co.kr/learn/courses/30/lessons/12939#qna
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
int max = -2147483648;
int min = 2147483647 ;
while(true)
{
int idx = s.find(' ');
string im = s.substr(0,idx);
int n = stoi(im);
if(max<n)max=n;
if(min>n)min=n;
if(idx == string::npos)break;
s=s.substr(idx+1);
}
answer=to_string(min)+" "+to_string(max);
return answer;
}
공백을 기준으로 구분된 숫자들이 문자열로 주어지는데 여기서 최댓값과 최소값을 찾아서 리턴하는 문제이다.
string 헤더에서 주어진 함수를 이용해 풀었다.
find로 공백을 찾고 substr 함수로 숫자를 구분해 stoi함수로 정수로 변환한다.
find함수는 더이상 해당문자열을 찾을 수 없을 때, string::npos를 반환한다.
처음 제출했을 때, 테스트케이스 7번과 마지막 2개가 실패로 떴는데 이유가 max = -1로 해놨었기 때문이다.
max가 -1이 안넘는경우도 있기 때문에 음수에서도 최솟값을 max초기값을 설정해서 통과했다.