해설
공백으로 구분된 숫자들 중 최솟값과 최댓값을 구하는 문제이다.
우리는 숫자 값을 비교하고 싶은데, 숫자들이 문자열 안에 파묻혀 있으므로 이를 숫자로 파싱하는 작업을 먼저 해주어야 한다.
문자열을 공백 기준으로 쪼개는 함수를 흔히 split() 함수라 하는데, c++에는 내장 split이 없으므로(python에는 있음) 직접 구현해보자.
문자열을 순회하면서 공백이 나올 때마다 단어들을 추출하여 vector에 넣어준다.
문자열 안에 있는 숫자들을 하나씩 split 한 후에는 각각의 숫자들을 순회하면서 최댓값과 최솟값을 구하면 정답이다.
코드
#include <cstring>
#include <cmath>
#include <algorithm>
#include <tuple>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <cctype>
#include <iostream>
using namespace std;
using ii = pair<int, int>;
using iii = tuple<int, int, int>;
#define X first
#define Y second
vector<string> split(string s) {
vector<string> v;
int st = 0;
s += ' ';
for (int i=0; i<s.size(); i++) {
if (s[i] != ' ') continue;
v.push_back(s.substr(st, i-st));
st = i+1;
}
return v;
}
string solution(string s) {
vector<string> v = split(s);
int mn = stoi(v[0]);
int mx = stoi(v[0]);
for (int i=1; i<v.size(); i++) {
int n = stoi(v[i]);
mn = min(mn, n);
mx = max(mx, n);
}
return to_string(mn)+" "+to_string(mx);
}
'대딩 > 프로그래머스풀이' 카테고리의 다른 글
[프로그래머스 lv2] 이진 변환 반복하기 풀이 (0) | 2022.08.14 |
---|---|
[프로그래머스 lv2] 행렬의 곱셈 풀이 (0) | 2022.08.14 |
[프로그래머스 lv2] JadenCase 문자열 만들기 풀이 (0) | 2022.08.14 |
[프로그래머스 lv2] N개의 최소공배수 풀이 (0) | 2022.08.13 |
[프로그래머스 lv2] 모음사전 풀이 (0) | 2022.08.13 |
댓글