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



Programmers - [연습문제] 최댓값과 최솟값




사용 언어 - C++

소요 시간 - 25분

정답 여부 - O




문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12939



문제 요약

  1. 공백으로 구분된 숫자가 들어있는 문자열이 주어짐
  2. 숫자들 중 최솟값과 최댓값을 구하고
  3. 최솟값 공백 최댓값을 문자열로 저장하여 return




최종 코드

#include <string>
#include <vector>
#include <sstream>
#include <algorithm>

using namespace std;

string solution(string s) {
    string answer = "";
    
    istringstream ss(s);
    string subString;
    vector<int> vi;
    
    while(getline(ss, subString, ' '))
        vi.push_back(stoi(subString)); //⭐ 문자열을 공백 단위로 쪼갬
    
    answer += to_string(*min_element(vi.begin(), vi.end())); //⭐ vi 배열의 최소값의 주소를 받아 해당 주소 내의 값 받아옴
    answer += " ";
    answer += to_string(*max_element(vi.begin(), vi.end())); //⭐ vi 배열의 최대값의 주소를 받아 해당 주소 내의 값 받아옴
    
    return answer;
}




트러블 슈팅

  • min_element와 max_element가 주소값을 반환하는 것을 모르고 그대로 to_string으로 문자열로 변환하려 했다가 실패 → *기호를 통해 해당 주소 내의 값을 가져옴




문제 풀이 후 소감

  • istringstream을 처음 사용해봤는데 문자열을 특정 문자 단위로 구분할 때 사용하면 좋을 것 같다. 조금 더 찾아보고 내껄로 만드는게 중요할 듯 싶다.
  • 처음에는 min과 max를 사용하려 했는데, min_element와 max_element를 사용하면 배열 내의 최소, 최대값을 쉽게 구할 수 있다고 해서 사용해봤다. 나중에 또 배열 내의 최대 최소를 구할 일이 생긴다면, 다음에는 minmax_element를 사용해서 최소, 최대 값을 pair로 가져와 사용해봐도 좋을 것 같다.




오늘의 기록

  • 아마 오늘부터는 바빠져서 코테를 월수금 푸는 걸로 변경해야 할 것 같다. 다른 날도 풀 수 있으면 풀겠지만 아마 조금 빠듯할지도…?
  • 어제 발목이 꺾여서 발이 조금 부었다… 빨리 회복되기를…ㅠㅠ