Algorithm

[Baekjoon]31474번 양갈래 짝 맞추기 - Javascript

호밀이 2024. 3. 11. 21:18

https://www.acmicpc.net/problem/31474

 

31474번: 양갈래 짝 맞추기

첫째 줄에 양갈래 손님의 수 $N$이 주어진다. ($2 \leq N \leq 28$, $N$은 짝수)

www.acmicpc.net

문제

시현이 카페에 양갈래 손님들이 들어가려고 한다.

양갈래 손님들은 양갈래를 너무 좋아하는 나머지 두 명씩 모여 있어 총 인원은 짝수이다.

시현이 카페에는 두 명씩 앉을 수 있는 테이블이 충분히 많이 있고, 양갈래 손님들은 한 테이블에 두 명씩 앉기로 하였다.

그런 양갈래 손님들을 맞이하게 된 시현이는 갑자기 궁금증이 생겼다.

손님들이 앉는 경우의 수를 세는 조건이 다음과 같을 때, 양갈래 손님들이 모두 앉을 수 있는 방법의 수는 몇 가지가 있을까?

  1. 테이블의 좌석을 구분하지 않는다.
    • 한 테이블에서 손님 A와 손님 B가 앉는 경우, 손님 B와 손님 A가 앉는 경우는 같은 경우이다.
  2. 각각의 테이블 또한 구분하지 않는다.
    • 1번 테이블에 손님 A, B가 앉고, 2번 테이블에 손님 C, D가 앉는 것과, 1번 테이블에 손님 C, D가 앉고, 2번 테이블에 손님 A, B가 앉는 것은 서로 같은 경우이다.

입력

첫째 줄에 양갈래 손님의 수 이 주어진다. (2≤�≤28, 은 짝수)

출력

첫째 줄에 양갈래 손님들이 앉을 수 있는 경우의 수를 출력한다.

연산 중 32비트 정수형 타입의 표현 범위를 초과할 수 있으므로 오버플로우에 주의한다.

예제 입력 1 복사

2

예제 출력 1 복사

1

예제 입력 2 복사

4

예제 출력 2 복사

3

 

문제풀이(1)

const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const N = Number(require("fs").readFileSync(filePath).toString().trim());

let result = 1;

for (let i = N; i > 0; i -= 2) {
  result *= (i * (i - 1)) / 2;
  result /= i / 2;
}

console.log(result);