[프로그래머스/Level 2] 최댓값과 최솟값

OOING·2023년 9월 2일
0

백준+알고리즘 공부

목록 보기
32/75

최댓값과 최솟값

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

제한 조건

s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

코드

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

string solution(string s) {
    stringstream ss;
    ss.str(s);
    vector<int> v;
    int num;
    while(ss >> num) {
        v.emplace_back(num);
    }
    return to_string(*min_element(v.begin(), v.end())) + " " + to_string(*max_element(v.begin(), v.end()));
}

기타

어려운 문제는 전혀 아닌데 그냥 내가 헷갈려하는 것들이 나와서 정리할 겸 포스트한다.

vector에서의 최댓값, 최솟값

  • 최댓값 : *max_element(v.begin(), v.end());
    - max_element 의 반환값은 해당 원소의 주솟값이므로 *을 붙여 값을 출력
  • 최솟값 : *min_element(v.begin(), b.end());

sstream 이용해서 문자열 자르기

stringstream ss;
ss.str(s);	// 자를 문자열(s)를 ss에 넣어 ss를 초기화
int num;	// 추출하기를 원하는 데이터의 자료형
while(ss >> num) {	// int형으로 추출한 데이터를 변수 num에 담음
	// 처리
}
  • stringstream : 문자열에서 원하는 자료형의 데이터를 추출
  • istringstream : 문자열 포맷을 parsing
profile
HICE 19

0개의 댓글