How We Coding

BOJ/etc. +1

[5883] 아이폰 9S

BOJ/etc.2018. 5. 14. 21:06

[5883] 아이폰 9S : http://boj.kr/5883


- 입력으로 들어오는 수를 체크해 놓고, 큐에 저장.

- 큐에서 꺼낸 다음, 이미 사용한 적이 있으면 continue

- 큐에서 꺼낸 값을 제외하고, 가장 길게 연속하는 수를 세가며 갱신.


<소스코드>


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
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
 
int a[1001];
int check[1000001];
int q[1001], f, r;
 
int main()
{
    int n, ans=1;
    scanf("%d"&n);
 
    for(int i=0; i<n; i++) {
        scanf("%d", a+i);
        check[a[i]] = 1;
        q[r++= a[i];
    }
 
    while(f != r) {
        int cnt = 1;
        int cur = a[0];
        int exp = q[f++];
 
        if(!check[exp]) continue;
 
        check[exp] = 0;
    
        for(int i=1; i<n; i++) {
            if(a[i] == exp) continue;
            if(cur == a[i]) cnt++;
            else {
                if(ans < cnt) ans = cnt;
                cur = a[i];
                cnt = 1;
            }
        }
        if(ans < cnt) ans = cnt;
    }
    printf("%d\n", ans);
    return 0;
}
cs