최댓값과 최솟값 (프로그래머스) - C++

2021. 2. 20. 19:54Algorithm

  • 문제
    •  str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요.
  • 설명
    • 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다.
  • 풀이
    • 간단한 형변환 문제이다. 
    • string을 기준이 되는(공백) char로 나눈 후, sstream과 getline을 사용
    • string을 integer로 변환하여 배열에 저장한다. stoi 를 사용
    • 배열에서 최댓값과 최솟값을 찾아 answer에 입력해준다. *min(max)_element 사용

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <algorithm>
using namespace std;
 
vector<int> split(string s , char delimiter)
{
    
    vector<int> split_integer_vector;
    stringstream ss(s);
    string temp;
    
    //getline(istream , str , delimiter) 
    //입력받은 string을 기준자를 통하여 나누어 정수로 형변환 한 뒤에 저장한다.
    while (getline(ss, temp, delimiter)) {      
        split_integer_vector.push_back(stoi(temp));
    }
    
    //문자열을 정수 벡터로 정리한 후 반환
    return split_integer_vector;
 
}
 
string solution(string s) {
    string answer = "";
    vector<int> numbers;
    
    
    numbers = split(s , ' ');
    
    //벡터의 최소값 
    int min = *min_element(numbers.begin() , numbers.end());
   
    //벡터의 최소값
    int max = *max_element(numbers.begin() , numbers.end());
    
    answer = to_string(min) + " " + to_string(max);
    
    
    return answer;
}
cs