링크
백준 12907 동물원
구현이 어렵다기 보단 제약조건을 생각하는 것이 까다로웠다. 처음에 제대로 생각하지 않아서 조건을 하나씩 빼먹으면서 구현해서 시행착오를 많이 겪었다.
만족해야 하는 조건은 다음과 같다.
1. 연속되는 수가 나올 것
2. 뒤의 수의 개수가 앞의 수보다 크면 안됨
3. 같은 숫자는 3개이상 나오면 안됨
4. 가장 큰숫자가 1개일 경우 경우의 수 *2
를 해줄 것
해당 제약들을 코드에 적용하기 위해 리스트를 초기화 하고 인덱스에 맞춰 해당 숫자의 갯수를 카운트 해주는 방법을 사용했다.
N = int(input())
arr = list(map(int, input().split()))
total = [0] * 41
ex_total = 2
for a in arr:
total[a] += 1
tmp = True
for cnt in total: #조건탐색
if cnt > ex_total:
tmp = False
break
ex_total = cnt
if tmp:
print(2 ** (total.count(2) + (1 if 1 in total else 0)))
else:
print(0)