C++/심심풀이땅콩코테

[프로그래머스 Lv.2] 최댓값과 최솟값

차차냥 2023. 3. 11. 12:13

운동은 "적절한 강도의 꾸준함"과

간혹 컨디션이 좋을 때
"근육통을 유발하는 강도"로 운동을 하면

근육 생성 및 유지에 효과가 좋다고 합니다.

 

뇌 운동도 비슷하다고 생각합니다.

매일 매일 어려운 문제를 풀다가 빠르게 지쳐 손을 놓기보다는

쉬운 문제를 매일 매일 풀어보는 습관을 들이고자 하는 데에 목적이 있는

"심심풀이땅콩코테"입니다.

 

간혹 이상한 방법으로 문제를 풀긴 합니다(정말 '어우 이게머야..' 할 정도)

그냥 참고만 해주세요 :)

 

(덧글로 본인의 풀이 방법을 적어주신다거나(본인의 코드를 자랑해주세요)

평화적인 지적을 환영합니다.)


#include <string>
#include <vector>
#include <map>
#include <string>
#include <sstream>

using namespace std;

// stringstream 사용
vector<string> getResultByStringstream(string s)
{
	string token;
	stringstream temp(s);
	vector<string> result;

	while (temp >> token)
	{
		result.push_back(token);
	}

	return result;
}

// istringstream을 통해 getline 사용
vector<string> getResultByiStringstream(string s)
{
	istringstream iss(s);
	string buffer;

	vector<string> result;

	while (getline(iss, buffer, ' '))
	{
		result.push_back(buffer);
	}

	return result;
}

string solution(string s)
{
	string answer = "";

	vector<string> result;
	std::map<int, int> mResult;

	result = getResultByStringstream(s);

	// map -> 자동정렬을 이용하기위해 씀
	for (auto& r : result)
	{
		int num = stoi(r);
		mResult.emplace(num, 1);
	}

	stringstream str;
	int count = 0;
	for (auto& m : mResult)
	{
		if (count == 0)
		{
			str << m.first;
		}
		if (count == mResult.size() - 1)
		{
			str << " " << m.first;
		}
		count++;
	}

	answer = str.str();

	return answer;
}
  • stringstream : 가지고 있는 string 에서 공백과 \n을 제외한 문자열을 차례대로 빼내는 역할을 한
  • istringstream : string을 입력받아 다른 형식으로 바꿔주는 기능을 한다.
  • getline : split 의 역할과 비슷

 

 

stringstream 은 자주 썼던지라 편하다.

그러나 getline을 쓰는 다른 방법으로도 풀어보았다.

둘 다 #include <sstream> 헤더를 포함해줘야 사용 가능하다는것.