Skip to content

Conversation

@jojaegu2
Copy link
Collaborator

@jojaegu2 jojaegu2 commented Mar 25, 2024

입력 처리: 비밀번호의 자릿수 n, 기억하고 있는 정보의 수 m, 비밀번호 입력 시간 x, 그리고 비밀번호 입력에 실패한 후 대기하는 시간 y를 입력받습니다.

정보 처리: 비밀번호에 대한 정보를 입력받아, 비밀번호의 특정 자리가 확정된 경우와 비밀번호 중 하나의 숫자가 확정된 경우를 구분합니다. pwCnt는 비밀번호의 특정 자리가 확정된 숫자의 개수를 나타내고, cnt는 비밀번호에 포함되어야 하는 확정된 숫자의 개수입니다.

비밀번호 조합 계산:

  1. math.comb(n, cnt): 확정된 숫자를 제외한 나머지 자리 중에서 cnt개를 선택하는 조합의 수입니다.
  2. math.factorial(cnt): 확정된 숫자 cnt개를 나열하는 순열의 수입니다.
  3. math.perm(9 - (pwCnt + cnt), n): 나머지 자리에 들어갈 수 있는 숫자의 순열입니다. 여기서 9 - (pwCnt + cnt)는 사용 가능한 숫자의 수입니다.
  4. 최대 시간 계산: 계산된 비밀번호 조합의 수에 대해 각 비밀번호를 입력하는 데 걸리는 시간(result * x)과 실패 후 대기하는 시간을 합하여 최대 시간을 계산합니다.

math.factorial(x):

x의 팩토리얼을 계산합니다. 팩토리얼은 1부터 x까지의 모든 정수의 곱을 의미합니다. 예를 들어, 5! (5의 팩토리얼)은 5 * 4 * 3 * 2 * 1 = 120입니다.
예) math.factorial(5)는 120을 반환합니다.

math.comb(n, k):

n개의 다른 항목들 중에서 k개를 선택하는 방법의 수, 즉 조합의 수를 계산합니다. 조합은 순서를 고려하지 않습니다.
예를 들어, {A, B, C}에서 2개를 선택하는 방법은 {A, B}, {A, C}, {B, C}의 3가지입니다.
예) math.comb(3, 2)는 3을 반환합니다.

math.perm(n, k=None):

n개의 다른 항목들 중에서 k개를 선택하여 나열하는 방법의 수, 즉 순열의 수를 계산합니다.
k가 지정되지 않으면 n으로 간주되어 n개 모두를 나열하는 순열의 수를 계산합니다.
순열은 선택된 항목들의 순서를 고려합니다. 예를 들어, {A, B}에서 2개를 나열하는 방법은 (A, B)와 (B, A)의 2가지입니다.
예) math.perm(2)는 2를 반환하고, math.perm(3, 2)는 6을 반환합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants