728x90
안녕하세요 뚜디 입니다 :)
코딩테스트 연습 - 최댓값과 최솟값 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 최댓값과 최솟값
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를
programmers.co.kr
< 프로그래머스 - 최댓값과 최솟값 (LV2) >
1. 연습 문제
2. 문제 풀이
3. 소스 코드
4. 결과
1. 연습 문제
- 문제 설명
문자열 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" |
2. 문제 풀이
이번 문제는 string으로 주어지는 문제이며, 코테문제에서 가장 쉽게 접할수 있는 문제중 하나입니다.
string을 ' '을 기준으로 split햐는법을 보고 가도록 합니다.
#include <sstream>
istringstream ss(s);
string stringbuff;
vector<string> a;
while (getline(ss, stringbuff, ' ')) {
a.push_back(stringbuff);
}
이방법은 대중저이면서도 간단하게 string을 split햘때 많이 사용합니다.
1. string 변수를 ' '을 기준으로 split 하여 vector<string> a 변수에 대입한다.
2. vector<string> a -> vector<int> temp로 형변환하여 대입한다.
3. 벡터 temp를 sort()를 통해 정렬해준다.
4. 정렬된 벡터 temp의 가장 앞(front) 가장 뒤(back)의 인자값을 더하여 리턴해준다.
3. 소스 코드
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
#include <sstream>
using namespace std;
string solution(string s) {
string answer = "";
istringstream ss(s);
string stringbuff;
vector<string> a;
vector<int> temp;
while (getline(ss, stringbuff, ' ')) {
a.push_back(stringbuff);
}
for (int i = 0; i < a.size(); i++) {
temp.push_back(stoi(a[i]));
}
sort(temp.begin(), temp.end());
return answer = to_string(temp.front()) + " " + to_string(temp.back());
}
4. 결과
728x90
'Programmers > C++' 카테고리의 다른 글
[C++] 프로그래머스 :: 땅따먹기 (0) | 2021.10.17 |
---|---|
[C++] 프로그래머스 :: 숫자의 표현 (0) | 2021.10.16 |
[C++] 프로그래머스 :: 최솟값 만들기 (0) | 2021.10.16 |
[C++] 프로그래머스 :: 피보나치 수 (0) | 2021.10.15 |
[C++] 프로그래머스 :: 행렬의 곱셈 (0) | 2021.10.15 |