언유상씨의 건전한 취미생활

[백준 알고리즘] 욱제는 결정장애야!! (14646) C++로 풀기 본문

건전한 취미생활 - 알고리즘

[백준 알고리즘] 욱제는 결정장애야!! (14646) C++로 풀기

언유상 2020. 5. 19. 16:00

문제 이름 : 욱제는 결정장애야!!

문제 번호 : 1292

사용 언어 : C++

 

문제는 다음과 같다.

 

아주 긴 배열을 만든 뒤, 돌아가면서 체크하면 된다.

스티커를 붙일때마다 스티커의 개수를 늘려주고, 스티커가 두개 붙은 경우에는 스티커를 다 떼어버리므로 -2를 해주면 된다.

이때, 욱제의 돌림판이 가지고 있는 능력으로 선택된것은 다시 선택되지 않으므로 부가적인 것은 생각하지 않아도 된다.

 

매 차례마다 스티커의 개수를 비교한다. 

 

 

소스코드는 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <utility>
#include <cmath>
 
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int n, temp, cnt = 0, ans = 0;
    int arr[100000= { 0, };
    cin >> n;
    for (int i = 0; i < 2*n; i++) { // 돌림판 돌리기
        cin >> temp;
        arr[temp - 1]++;
        cnt++;// 스티커 갯수
        if (arr[temp - 1== 2) {  // 두번 다 뽑힌 경우
            cnt -= 2;
        }
        if (cnt > ans) { // 스티커의 개수가 최대인 경우
            ans = cnt;
        }
   }    
    cout << ans;
    return 0;
}
cs

 

제출해보면

 

Comments