https://www.acmicpc.net/problem/10220
이 문제는 정말 수학문제입니다. 수열의 갯수를 계산해야 하는데, $A[0]$의 값으로 경우의 수를 나눠야합니다.
$A[0]$이 $0$인 경우는 자명하게 불가능합니다.($A[0]$이 0이라는 것은 $A[0]$~$A[N-1]$중에 0이 없다는 소리인데 당장 $A[0]$이 0이므로 모순)
i) $A[0] = 1$일 때
0은 딱 1번 나오므로 $A[1],A[2], ... , A[N-1]$ 중에서 1개는 0, 1개는 2, $N-3$개는 1임을 알 수 있습니다. 그렇게 되면 $A[1] = N-2$ 인데, $A[1]$은 1 혹은 2이므로 $N-2$는 1 혹은 2이므로 $N = 3, 4$일 때 실제로 확인해보면 $N = 3$일땐 불가능하고 $N = 4$일 땐 (1,2,1,0)이 가능함을 확인할 수 있습니다.
ii) $A[0] = 2$일 때
0은 2번 나오므로 $A[1],A[2], ... , A[N-1]$ 중에서 2개는 0, 1개는 2, $N-4$개는 1임을 알 수 있습니다. 그렇게 되면 $A[1] = N-4$, $A[2] = 2$가 됩니다. $A[1]$은 0 혹은 1혹은 2이므로 $N = 4,5,6$에 대해서 실제로 확인해보면 $N=4$일땐 (2,0,2,0), $N=5$일땐 (2,1,2,0,0), $N=6$일땐 불가능합니다.
iii) A0 > 2일 때
$A[1],A[2], ... , A[N-1]$ 중에서 정확히 $A[0]$개가 0. 나머지 $N-1-A[0]$개의 원소의 합은 $N-A[0]$이므로 딱 하나만 2이고 나머지는 전부 1이어야 합니다.
그러면 0는 $A[0]$번, 1은 $N-2-A[0]$번, 2는 1번, $A[0]$는 1번, 나머지 수는 0번 등장합니다.
그런데 딱 하나만 2이고 나머지는 전부 1이어야 하므로 $N-2-A[0]$ = 2가 되고 계산하면 $A[0] = N-4$가 되어서 최종적으로
$A[0] = N-4, A[1] = 2, A[2] = 1, A[N-4] = 1$이면 됩니다. 단 $N > 6$이어야겠네요.
최종적으로 $N$이 1,2,3,6일땐 0이고, $N$이 4일땐 2이고, 나머지 $N$에 대해서는 1이네요.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 1038번: 감소하는 수 (23) | 2018.01.07 |
---|---|
[BOJ] 11689번: GCD(n, k) = 1 (4) | 2018.01.07 |
[BOJ] 11778번: 피보나치 수와 최대공약수 (0) | 2018.01.07 |
[BOJ] 12796번: 나의 행렬곱셈 답사기 (0) | 2018.01.07 |
[BOJ] 2447번: 별찍기 - 10 (0) | 2018.01.07 |
[BOJ] 2263번: 트리의 순회 (0) | 2018.01.07 |