38강
접근법 :
삽입 정렬의 개념을 활용한 문제였다.
이 문제에서의 핵심은 큰 수부터 정렬 한다는 점이다.
i라는 변수는 1 ~ n 까지 사이의 수를 돌면서 앞에 자신보다 큰 수가 몇개 있는지를 입력 받는다.
자신보다 큰 수가 앞에 몇개 있냐는 소리는 결국엔 현재 인덱스에서 몇칸을 앞으로 땡기고 수를 넣냐와 같은 이야기이다.
그래서 for문을 for(i=n;i>=1;i--) 로 잡고
그안에 for문은 for(j=1;j<=v[i];j++) 로 잡고
j for문 안에는,
position = i;
a[position] = a[position+1];
position++;
라고 적어준다.
39강
접근법 :
merge를 하는 문제였다.
나는 여기서 vector.empty() 를 사용하여 문제를 풀었는데, 강사님은 p1,p2,p3라는 입력배열 a, b 그리고 결과 배열 c의 현재 가리키고 있는 인덱스 값을 가리키는 변수를 만들어 사용하셨다.
논리는 같았다.
p1, p2 가 각각 n보다 크지않고 m 보다 크지 않을때, 두 개의 p1 p2 인덱스에 해당하는 값을 비교하여 더 작은 값을 c에 추가하고, 추가 한쪽의 p1,p2 를 ++ 해준다.
그리고 while문을 빠져 나오게 되면 한 쪽이 아직 값이 남아 있을 수도 있기 때문에 while문 밖에서 while문 두개를 만들어서 p1,p2와 m과n을 비교 해본다.