[1947] 선물 전달하기 (완전 순열, 교란 순열)
·
Coding Test/Combination
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 # ..
[9252번] 최장 공통 부분 수열 찾기(LCS)
·
Coding Test/DP
9252번: LCS 2 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net LCS Longest Common Subsequence 분석 풀이 import sys input=sys.stdin.readline sys.setrecursionlimit(10000) a=list(input()) a.pop() b=list(input()) b.pop() # 점화식 테이블 d=[[0 for j in range(len(b)+1)] for i in range(len(a)+1)] # LCS 저장 리스트 re..
[2193번] 이친수 구하기
·
Coding Test/DP
2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 풀이1 """ 이진수 0으로 시작하지않음 1이 두번 연속으로 나타나지 않음. 11을 부분 문자열로 갖지않음 이친수 : 1, 10, 100, 101, 1000, 1001 이친수X : 0010101, 101101 N(1~90)자리의 이친수의 개수 구하기] """ import sys input=sys.stdin.readline n=int(input()) d=[[0 for i in range(2)] for j in range(n+1)] d[0][0]=0 # ..