
n개의 서로 다른 오브젝트에서 r개를 추출한다. 이때 추출 순서가 상관이 있으면 순열, 상관이 없으면 조합이라고 한다. 순열의 식은 다음과 같다. 예를 들어, 5개의 공이 있는데 그중에 3개의 공을 뽑아 순서대로 나열하는 경우의 수는 5*4*3*2*1 / 2*1 = 60이다. C++에서 순열을 표현하는 코드는 next_permutation이다. 해당 함수는 배열(혹은 벡터)에서 순열을 수행할 시작 위치와 끝 위치를 인자로 받은 뒤, 해당 순열을 오름차순 기준으로 다음 순열로 바꾸어 준다. 예를 들어, {1, 2, 3}인 배열이 존재한다고 가정하면, next_permutation을 수행한 후 해당 배열은 {1, 3, 2}로 바뀌게 된다. 해당 함수를 반복 수행하여 순열의 모든 경우의 수를 출력할 수 있다...
"\n" vs endl endl은 출력 버퍼를 비워 주는 flush의 과정을 수행하기 때문에 \n보다 수행시간이 느리다. cin 입력을 여러 번 받을 경우 아래의 코드를 작성하여 cin의 수행시간을 줄일 수 있다. ios_base::sync_with_stdio(0);cin.tie(0); 우선순위 큐 vs 정렬 기본적으로 한 번만 정렬할 경우에는 sort가 우선순위 큐를 생성하는 것보다 빠르다. 하지만 원소의 push와 pop이 빈번하여 정렬을 여러 번 수행해야 할 경우, 우선순위 큐의 속도가 더 빠르다. v.empty() vs v.size() == 0 가독성, 실행 시간 모두 empty가 빠르다. vector vs array 벡터는 크기가 동적이기 때문에 저장할 데이터 개수를 알 수 없을때 사용한다. 하..