풀이

 

stringstream 사용하여 공백 기준으로 문자열 분리

분리한 문자열을 stoi로 int형변환하여 vector v에 push_back

sort 로 v 벡터 오름차순 정렬

 

최소값 : v의 처음 값 = v[0] 

최대값 : v의 마지막 값 = v[v.size()-1]

 

answer에 삽입

 

	string solution(string s) {
		string answer = "";	
		vector<int> v;
		string temp;
		stringstream sstream;

		sstream.str(s);


		while (sstream >> temp) {
			v.push_back(stoi(temp));
		}
		
		sort(v.begin(), v.end());

		answer += to_string(v[0]);
		answer += " ";
		answer += to_string(v[v.size() - 1]);

		return answer;
	}

 

풀이

 

두 수의 최대공약수를 구하는 함수 gcd

최대공약수를 사용하여 최소공배수를 구하는 함수 lcm

 

{a, b, c, d, e......} 와 같은 n개의 최소공배수는 어떻게?

 

a, b의 최소공배수 x를 구하고

x와 c의 최소공배수 y를 구하고

y와 d의 최소공배수 z를 구하고..

 

반복

 

 

int gcd(int x, int y) {
	int n;
	while (y!=0) {
		n = x % y;
		x = y;
		y = n;
	}
	return x;
}

int lcm(int x, int y) {
	return x * y / gcd(x, y);
}

int solution(vector<int> arr) {
	int answer = lcm(arr[0], arr[1]);
	for (int i = 2; i < arr.size(); i++) 
		answer = lcm(arr[i], answer);
	return answer;
}

 

+ Recent posts