본문 바로가기

🥇Problem Solving (psS2mj)/알고리즘 이론2

[나동빈 파이썬/그리디-①] 큰 수의 법칙 큰 수의 법칙 민지's 문제요약 M회를 더해야하는데, 같은 원소를 K번 이상 연속해서 사용할 수는 없음. 다른 원소 한 번 더했다가 다시 돌아가는건 오케이. 같은 숫자가 있어도 인덱스가 다르면 다른 숫자로 취급함. 민지's 아이디어 1. 내림차순으로 정렬한다. 2. 반복가능한 K만큼 가장 큰 수를 반복해서 더한다. (M회가 채워지면 끝이고, 안 채워지면 3단계 수행) 3. 두 번째로 큰 수를 한 번 더한다. (M회가 채워지면 끝이고, 안 채워지면 다시 2번으로 돌아간다.) N, M, K = map(int, input().split()) nums = list(map(int, input().split())) nums.sort(reverse=True) result = 0 for _ in range(M): fo.. 2020. 9. 25.
[알고리즘 이론] 순열과 조합, 그리고 중복순열과 중복조합 순열과 조합, 그리고 중복순열과 중복조합은 알고리즘 문제풀이에서 매우 자주 이용되고, 또 백트래킹이니 DFS니 어쩌구 저쩌구로 이어지는 것들이다. 그래서 코드로 구현하는 것까지는 다음에 하고, 오늘은 이론적인 내용을 예시와 함께 살짝 정리해두려고 한다. 우선 순열과 조합부터 이야기해보자. 이 둘은 중복을 허용하지 않으므로 모두 다른 숫자가 나온다는 공통점이 있다. 순열: 중복을 허용하지 않음. 순서가 의미 있음. 조합: 중복을 허용하지 않음. 순서가 의미 없음. 그리고 순서가 유의미한지의 여부가 둘의 가장 큰 차이다. 가령 주사위를 3번 던진다고 할 때 순열은 1 2 3 1 3 2 이 두 가지가 모두 나올 수 있다. 중복을 허용하지 않으므로 모두 다른 숫자가 나왔고, 순열은 순서가 유의미하므로 [1, 2.. 2020. 5. 25.