2020. 7. 9. 09:39ㆍ알고리즘_생각하기/프로그래머스 Level 2
문제 설명
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 1 2 3 4라면 1 4를 리턴하고, -1 -2 -3 -4라면 -4 -1을 리턴하면 됩니다.
제한 조건
- s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
풀이
사용 언어 : C++
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string s)
{
string answer = "";
int idx = 0; //어디부터 어디까지 변환하여 벡터에 담을것인지
string temp = ""; //임시 스트링
vector<int>t; //임시로 정수형으로 저장 할 벡터
string min = ""; //미니멈
string max = ""; //맥시멈
for (int i = 0; i < s.size(); i++) //스트링 전체 돌려 돌려
{
if (s[i] == ' ') //공백이면?
{
for (int j = idx; j < i; j++) //idx부터 공백 이전까지 돌려 돌려
{
temp += s[j]; //임시 스트링에 담기
if (j == i - 1) // 공백 빼고 이전까지 다 담았으면?
{
t.push_back(stoi(temp, 0)); //벡터에 형변환하여 담기
temp = ""; //임시 스트링 초기화! 초기화 하지 않으면 쌓인다.
idx = i + 1; //idx를 공백 다음 자리로 바꿔주기
}
}
}
if (i == s.size() - 1) //끝 자리까지 돌았으면 공백이 없다!
{
for (int j = idx; j <= i; j++) //돌려 돌려~ 주의! j를 i까지 돌려줘야 한다! 공백이 아니니까!!
{
temp += s[j]; //담고~
if (j == i) //주의! 위에서는 i가 공백이었기 때문에 i - 1이었지만 이 부분은 공백이 없기 때문에 i로!
{
t.push_back(stoi(temp, 0)); //담고~
temp = ""; //초기화! 하지만 굳이 하지 않아도 된다!
break;
}
}
}
}
sort(t.begin(), t.end()); //정렬~
min = to_string(t[0]); //미니멈은 맨 앞에
max = to_string(t[t.size() - 1]); //맥시멈은 맨 뒤에 있음
answer = min + " " + max; //중간에 공백 넣는거 잊지 말기!
return answer;
}
'알고리즘_생각하기 > 프로그래머스 Level 2' 카테고리의 다른 글
프로그래머스 - 올바른 괄호 <Level 2> (1) | 2024.01.26 |
---|---|
프로그래머스 - 이진 변환 반복하기 <Level 2> (0) | 2024.01.24 |
프로그래머스 - 짝지어 제거하기 <Level 2> (0) | 2024.01.17 |
프로그래머스 - 탑 < Level 2 > (0) | 2020.06.25 |
프로그래머스 - 더 맵게 < Level 2 > (0) | 2020.06.24 |