프로그래머스 문자열 묶기 문제 바로가기

내 풀이

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

using namespace std;

int solution(vector<string> strArr) {
    int max_len = 0;
    vector<int> strlen(30);
    for (string s: strArr){
        strlen[s.size()-1] += 1;
    }
    for (int i: strlen){
        max_len = max(i, max_len);
    }
    return max_len;
}

vector을 초기화하는 방법

#include <vector>

vector<int> vec(5); // {0,0,0,0,0}
vector<int> vec2(5, 3); // {3,3,3,3,3}

위 처럼 vector의 기본값을 지정하여 초기화할 수 있다. for문을 사용하지 않고 간단하게 초기화하는 방법을 활용하자! vector<int>로 declare한 뒤에 그 변수명 뒤에 괄호 안에 (크기, 초깃값)을 지정하면 된다. 초깃값을 전달하지 않으면 기본값인 0으로 초기화된다.

vector에서 최댓값 구하기

for문으로 일일히 비교하기

#include <algorithm>
// 중간 생략
int ans = 0;
for (int i: vec){
    ans = max(ans, i);
}

max_element 활용하기

#include <algorithm>
// 중간 생략
int ans;
ans = *max_element(vec.begin(), vec.end());

이 방법이 매우 편리하다고 생각했다. (근데 그냥 max()안에 arr을 전달하면 되는 python에 비해서는 귀찮긴 하다…) max_element()는 iterator을 return하며, *max_element()는 최댓값의 실제 값을 return한다.