[1947] 선물 전달하기 (완전 순열, 교란 순열)

2023. 6. 4. 00:06·Coding Test/Combination
728x90
 

1947번: 선물 전달

경우의 수를 1,000,000,000으로 나눈 나머지를 첫째 줄에 출력한다.

www.acmicpc.net

 

분석

완전 순열 : n개의 원소가 모두 자기 자신이 아닌 값으로 배정되는 순열 (모든 원소의 위치를 바꾸는 순열)

A가 B에게 선물을 줬다고 가정

1. B도 A에게 선물을 줬을 때 (양방향 교환)
: N명 중 2명이 교환을 완료했으므로 남은 경우의 수는 D[N-2]

2. B는 A가 아닌 다른 사람에게 선물을 선달할 때 (단방향 교환)
: N명 중 B만 받은 선물이 정해진 상태이므로 남은 학생은 N-1이며 경우의 수는 D[N-1]

 

풀이

n=int(input())
mod=1000000000
d=[0]*10000001
d[1]=0 # 혼자서는 선물을 교환할 수 없음
d[2]=1 # 2명일 경우에는 서로 교환하는 경우의 수만 존재

for i in range(3,n+1):
    d[i]=(i-1)*(d[i-1]+d[i-2]) %mod

print(d[n])

 

더보기

참고

 

교란순열(derangement)에 대하여

이번 글에서는 아래와 같은 형태의 문제에 대해서 생각해 볼 것이다. 목욕탕에 $n$명의 사람이 있다고 하자. 이 때, 몇 사람씩 그룹을 만들어 동그랗게 서서 서로가 앞사람의 등을 밀어주는 경우

jjycjnmath.tistory.com

 

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'Coding Test/Combination' 카테고리의 다른 글
  • [13251] 조약돌 꺼내기
  • [1010] 다리 놓기
  • [11051] 이항계수
  • 피자 배달 거리 (삼성 SW역량평가 기출문제 : DFS, 조합)
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    최대공약수
    큐
    LIS
    BFS
    자료구조
    최단거리
    백준
    이분탐색
    동적계획법
    DFS
    조합
    그리디
    정렬
    구간합
    월간코드챌린지
    구현
    Algorithm
    파이썬
    덱
    DP
    힙
    다익스트라
    그래프
    스택
    최소신장트리
    재귀
    플로이드워셜
    트리
    프로그래머스
    알고리즘
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
[1947] 선물 전달하기 (완전 순열, 교란 순열)
상단으로

티스토리툴바