안녕하세요 길벗수험서 운영팀입니다.
먼저 두 반복문에서 앞의 반복문에서 P와 J의 역할, 뒤의 반복문에서 P의 T의 역할을 눈여겨 보셔야 합니다.
P는 J~M까지 값이 변화하며, C[K] = B[P]를 통해 배열 B에서 미처 들어가지 못한 값들을 차례대로 배열 C에 저장하게 해줍니다. 뒤의 반복문도 마찬가지로 P는 T~L까지 값이 변화하면서 C[K] = A[P]를 통해 배열 A에서 미처 들어가지 못한 값들을 배열 C에 저장합니다.
만약 배열 B[10]에서 위 과정(605p 순서도 3~7, 11~14)으로 B[6]까지만 들어갔다면, 변수 P는 7~10까지 값이 변화하게 되겠죠. 이 때 P = J = 7이 되겠고, M은 10이 될것입니다.
P는 반복문에 따라 7, 8, 9, 10으로 변화하지만, J는 7에서 값이 변화하지 않습니다.
즉 C[K]=B[J]를 하게 되면 B[7]만이 반복적으로 배열 C에 들어가서 올바른 결과가 출력되지 않게 되겠죠.
서로 병합하려는 배열에서 위 과정(605p 순서도 3~7, 11~14) 후 남는 배열의 공간이 하나라면 문제가 없습니다. 다만 하나 이상일 경우 중복된 값이 들어가면서 틀린 결과가 출력될 것입니다.
행복한 하루 되세요 :)
-
관리자2019-02-18 11:36:00
안녕하세요 길벗수험서 운영팀입니다.
먼저 두 반복문에서 앞의 반복문에서 P와 J의 역할, 뒤의 반복문에서 P의 T의 역할을 눈여겨 보셔야 합니다.
P는 J~M까지 값이 변화하며, C[K] = B[P]를 통해 배열 B에서 미처 들어가지 못한 값들을 차례대로 배열 C에 저장하게 해줍니다. 뒤의 반복문도 마찬가지로 P는 T~L까지 값이 변화하면서 C[K] = A[P]를 통해 배열 A에서 미처 들어가지 못한 값들을 배열 C에 저장합니다.
만약 배열 B[10]에서 위 과정(605p 순서도 3~7, 11~14)으로 B[6]까지만 들어갔다면, 변수 P는 7~10까지 값이 변화하게 되겠죠. 이 때 P = J = 7이 되겠고, M은 10이 될것입니다.
P는 반복문에 따라 7, 8, 9, 10으로 변화하지만, J는 7에서 값이 변화하지 않습니다.
즉 C[K]=B[J]를 하게 되면 B[7]만이 반복적으로 배열 C에 들어가서 올바른 결과가 출력되지 않게 되겠죠.
서로 병합하려는 배열에서 위 과정(605p 순서도 3~7, 11~14) 후 남는 배열의 공간이 하나라면 문제가 없습니다. 다만 하나 이상일 경우 중복된 값이 들어가면서 틀린 결과가 출력될 것입니다.
행복한 하루 되세요 :)