https://school.programmers.co.kr/learn/courses/30/lessons/12939
#include <string>
#include <set>
#include <sstream>
#include <iostream>
#include <algorithm>
using namespace std;
string solution(string s)
{
stringstream ss(s);
int blank_cnt = count(s.begin(), s.end(), ' ');
set<int> list;
for (int i = 0; i <= blank_cnt; ++i)
{
string str;
ss >> str;
list.insert(stoi(str));
}
string answer = to_string(*(list.begin())) + " " + to_string(*(--list.end()));
return answer;
}
stringstream과 set을 이용해서 문제를 풀었는데, set은 배열의 인덱스로 직접 접근이 불가능하여 반복자 iterator를 사용했는데, set의 처음 요소와 마지막 요소에 접근할 때 가독성이 좋지 않아서 어떻게 하면 타인이 봤을 때 한눈에 들어올까 생각하다가 C++17부터 reverse iterator가 생각이 나서 아래와 같이 다시 정리해보았다.
auto first = list.begin();
auto last = list.rbegin();
string answer = to_string(*first) + " " + to_string(*last);
- 시작과 끝을 가리키는 iterator를 2개 정의
- 마지막 요소를 가리킬때 rbegin( )을 사용하여 직관적으로 읽히게 하였다.
'공부 > Code Cata' 카테고리의 다른 글
N개의 최소 공배수 (0) | 2025.02.04 |
---|---|
JadenCase 문자열 만들기 (0) | 2025.01.27 |
개인정보 수집 유효기간 (1) | 2025.01.22 |
햄버거 만들기 (0) | 2025.01.20 |
숫자 짝꿍 (0) | 2025.01.13 |