[파이썬]백준 12907 동물원

Byeonghyeon Kim·2021년 3월 28일
0

알고리즘문제

목록 보기
46/93
post-thumbnail

링크

백준 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)

알게된 것👨‍💻

  • 제약 조건을 놓치지 않고 생각하는 습관을 갖자.
profile
자기 주도 개발전 (개발, 발전)

0개의 댓글