[codeup] 2651 : 극장 좌석 배치 1

SUNGJIN KIM·2023년 7월 6일
0

CODEUP

목록 보기
69/76
post-thumbnail

문제

극장에 n개의 빈 좌석이 있다.

k명의 관객들이 영화를 보기 위해서 왔다.

이 관객들이 n개의 좌석에 앉을 수 있는 서로 다른 방법의 수를 구하는 프로그램을 작성하시오.

(단, k명의 사람을 서로 구분하지 않는다.)

입력

첫 번째 줄에 n 과 k 가 공백으로 구분되어 입력된다.

[입력값의 정의역]

1 ≤ k ≤ n ≤ 20

입력 예시

4 2

출력

구한 답을 첫 번째 줄에 출력한다.

출력 예시

6

풀이

문제 풀이 시 조금 오래 걸렸다.
가능한 모든 좌석에 대해서는 어렵지 않게 구현할 수 있었으나 중복되는 값을 제거하는 부분에서 조금 애를 먹었다.

처음에는 중복되는 값을 찾기 위해 모든 들리는 값을 저장해야 하는 건가 싶었는데,
이것저것 찾으면서 여러 방법을 시도해본 결과, index값만 지정하면 되는 것이였다..

seat, people = map(int, input().split(" "))

seat_status = [False for _ in range(seat)]

def how_to_seat(seat_status, people, count, start_index):

    if cal_seat_status(seat_status) == people:
        count += 1
        return count

    for i in range(start_index, len(seat_status)):
        if not seat_status[i]:
            seat_status[i] = True

            count = how_to_seat(seat_status, people, count, i + 1)

            seat_status[i] = False

    return count

def cal_seat_status(seat_status):
    return sum(seat_status)

count = 0

if len(seat_status) == people:
    count = 1
else:
    count = how_to_seat(seat_status, people, count, 0)

print(count)
profile
#QA #woonmong

0개의 댓글