문제 https://school.programmers.co.kr/learn/courses/30/lessons/12987# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr B 그룹의 최대 승점을 구하는 문제였다. 문제 풀이 A와 B 벡터를 정렬한 후 뒤에서부터 A>B / A B[indexB]){ indexA--; } else if(A[indexA] == B[indexB]){ indexA--; } } return answer; }
실전 문제는 굉장히 쉬웠다. 위에서 아래로 단순히 내림차순 정렬하는 문제였다. c++의 sort 함수는 오름차순 정렬이 기본으로 설정되어 있다. 내림차순 정렬을 하고 싶을 때에는 compair 함수를 생성해서 sort의 세 번째 인자로 넣어주면 된다. int compair(int a, int b) { return a > b; } int main() { int N; int i; int num[501]; scanf("%d", &N); for (i = 0; i < N; i++) { scanf("%d", &num[i]); } sort(num, num + N, compair); for (i = 0; i < N; i++) { printf("%d ", num[i]); } } /* 3 15 27 12 */ 성적이 낮은..
선택 정렬 제자리 정렬 알고리즘 중 하나 가장 작은 것을 선택해 앞으로 보내는 과정을 N-1번 반복함 시간 복잡도 O(N²) 매우 비효율적 1. 주어진 데이터 중 작은 데이터 찾기 2. 맨 앞의 데이터와 교체 3. 맨 앞의 데이터를 뺀 나머지 데이터들을 같은 과정으로 교체 삽입 정렬 필요할 때만 위치를 바꿈 데이터가 정렬되어 있을 때 효율적 특정한 데이터를 적절한 위치에 삽입함 두 번째 데이터부터 시작 ( 첫 번째 데이터는 그 자체로 정렬되어 있다고 판단함) 정렬이 이뤄진 데이터는 항상 오름차순을 유지하고 있음 시간 복잡도 O(N²) (최선의 경우 O(N), 정렬이 거의 되어있는 경우 퀵 정렬보다 강력함) 1. 두 번째 데이터부터 앞에서부터 차례대로 비교하며 자신이 들어갈 부분을 찾음 2. 그 위치에 데..