본문 바로가기
코딩테스트/파이썬

[백준/30993/파이썬] 자동차 주차

by JI NY 2024. 1. 21.

[백준/30993/파이썬] 자동차 주차

30993번: 자동차 주차 (acmicpc.net)

 

30993번: 자동차 주차

첫 번째 줄에 양의 정수 $N$, $A$, $B$, $C$가 공백으로 구분되어 주어진다.

www.acmicpc.net

 

자동차 주차 

1 초 1024 MB 413 307 294 80.992%

문제

같은 차종의 빨간색 자동차 대, 초록색 자동차 B대, 파란색 자동차 C대를 N칸의 주차장에 1대씩 주차하려고 한다.

모든 자동차를 한 칸에 한 대씩 주차할 수 있는 경우의 수를 구하라.

입력

첫 번째 줄에 양의 정수 N,A,B,C 가 공백으로 구분되어 주어진다.

출력

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

 


코드

- 팩토리얼 문제이다. N! / (A! * B! * C!) 이렇게 풀면 된다.

 

from sys import stdin


def p(t):
    if (t<=1):
        return 1
    else:
        return t *p(t-1)
n,a,b,c = map(int,stdin.readline().split())

print(p(n)//(p(a)*p(b)*p(c)))

 

- 팩토리얼 코드는

1. 팩토리얼 함수(p)를 만들었다. p(n)에 n 값에 따라 결과가 달라진다.

2. 만약 n<=1이면, 1을 반환한다.

3. N<=1이 아니라면, n*p(n-1)를 반환한다.

4. 만약 n = 5 인 경우,

5*p(4) -> 5*4*p(3) -> 5*4*3*p(2) -> 5*4*3*2*p(1) -> p가 1이므로 1을 반환하므로

결괏값이 나온다.

 

더 자세한 풀이는, [백준/Baekjoon] [C언어] 10872.. : 네이버블로그 (naver.com) 여기 참고! (옛날에 쓴 글)

 


댓글