책 내용 질문하기
알고리즘 질문해봅니다.
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
328,329
조회수
652
작성일
2019-02-15
작성자
탈퇴*원
첨부파일
3번의 정답은 C[K]=B[P] 5번의 정답은 C[K]=A[P] 입니다. 근데 이것을 3번의 정답은 C[K]=B[J] 5번의 정답은 C[K]=A[T]로 작성하면 정답처리되나요? 디버깅과정에 오류가 없는것같더라구요
답변
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) 후 남는 배열의 공간이 하나라면 문제가 없습니다. 다만 하나 이상일 경우 중복된 값이 들어가면서 틀린 결과가 출력될 것입니다.

 

행복한 하루 되세요 :)

  • 관리자
    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) 후 남는 배열의 공간이 하나라면 문제가 없습니다. 다만 하나 이상일 경우 중복된 값이 들어가면서 틀린 결과가 출력될 것입니다.

     

    행복한 하루 되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.