-
[프로그래머스/Level 2] 최댓값과 최솟값 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 28. 14:00
programmers.co.kr/learn/courses/30/lessons/12939
코딩테스트 연습 - 최댓값과 최솟값
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를
programmers.co.kr
풀이
임시 문자열 저장 변수를 선언하여 공백을 기준으로 더해가며 이를 정수형으로 바꾼 후, 벡터에 삽입한다.
그리고 오름차순으로 정렬하면 맨 앞의 원소는 최솟값, 맨 뒤의 원소는 최댓값이 되므로 front()와 back()을 이용하여 쉽게 찾아낼 수 있다.
다른 방법으로는 stringstream을 이용하여 문자열을 split하는 것이다. stringstream을 사용하면 문자열을 공백 단위로 분리하고 이를 새로운 문자열에 담아 출력할 수 있다.
전체 코드
#include <string> #include <vector> #include <algorithm> using namespace std; string solution(string s) { string answer = ""; string tmp = ""; vector<int> v; for(int i = 0;i < s.size(); i++) { if(s[i] == ' ') { v.push_back(stoi(tmp)); // v.push_back(atoi(tmp.c_str())); tmp.clear(); } else { tmp += s[i]; } } v.push_back(stoi(tmp)); // 마지막 부분은 공백이 없으므로 따로 더해준다. sort(v.begin(), v.end()); answer = to_string(v.front()) + " " + to_string(v.back()); return answer; }
#include <string> #include <vector> #include <sstream> // stringstream #include <algorithm> using namespace std; string solution(string s) { string answer = ""; string token = ""; vector<int> v; int min, max; // stringstream 사용 for(stringstream ss(s); (ss >> token); ) { v.push_back(stoi(token)); } // algorithm에서 제공하는 최대, 최소 찾는 함수 min = *min_element(v.begin(), v.end()); max = *max_element(v.begin(), v.end()); answer = to_string(min) + " " + to_string(max); return answer; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 2] 멀쩡한 사각형 (C++) (0) 2020.10.29 [프로그래머스/Level 2] 기능개발 (C++) (0) 2020.10.28 [프로그래머스/Level 1] 다트 게임 (C++) (0) 2020.10.28 [프로그래머스/Level 1] 비밀지도 (C++) (0) 2020.10.27 [프로그래머스/Level 1] 행렬의 덧셈 (C++) (0) 2020.10.27