프로그래머스/lv2/132265. 롤케이크 자르기

SITY·2023년 11월 14일
0

Cpp_Algorithm

목록 보기
41/43

#include <string>
#include <unordered_set>
#include <vector>
using namespace std;

int solution(vector<int> v) {
    int answer = 0;

    int arr[10001] = {
        0,
    };
    unordered_set<int> s;
    for (int i = 0; i < v.size(); i++) {
        s.insert(v[i]);
        arr[v[i]]++;
    }
    unordered_set<int> a;
    for (int i = 0; i < v.size(); i++) {
        if (arr[v[i]] >= 2) {
            arr[v[i]]--;
        } else {
            arr[v[i]]--;
            s.erase(v[i]);
        }
        a.insert(v[i]);

        if (a.size() == s.size()) answer++;
    }

    return answer;
}

원소마다 개수를 세는 arr을 따로 선언하고, 먼저 첫 번째 set에 미리 모든 원소를 넣는다.
그리고 비교하기 위한 두 번째 set을 만든 뒤 for문을 돌면서 첫 번째 set엔 원소를 지우고,
두 번째 set엔 원소를 추가하며 size를 비교하며 size가 같으면 answer을 하나 올려준다.

profile
·ᴗ·

0개의 댓글