책 내용 질문하기
산업기사실기모의고사
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
00
조회수
315
작성일
2020-05-17
작성자
탈퇴*원

1번문제 2번문제 정답지보다 상세한 풀이과정좀 알려주세요,, 디버깅이랑 코드 해석 상세히 부탁드려요! 디버깅 라인맞춰서 알려주시면 감사하겠습니다

답변
2020-05-18 13:04:05

안녕하세요 길벗수험서 운영팀입니다.

 

모든 코드를 해설하는 것은 시간 관계 상 어렵습니다. 주요 알고리즘 부분만을 설명해드릴테니, 해당 알고리즘을 염두에 두고 직접 값의 변화를 추적하세요.

 

while (a[x] != 0) 

   x++;

x--;

 

a[x]에 0 값 처음 발견되는 위치를 파악합니다.

반복문이 끝나면 x의 값을 1 줄여 배열 a에 값이 부여된 위치를 파악합니다.

(0이 저장된 곳은 4번째 위치(a[4])이고, -1을 통해 배열에 3번째 위치(a[3])까지 값이 부여되어 있음을 알 수 있습니다.)

 

m = x / 2;

do {

tmp = a[x];

a[x] = a[y];

a[y] = tmp;

x--;

y++;

} while (x != m);

 

중간값을 파악하고 중간값에 도달할 때까지 좌우의 값을 교체합니다.

 

for (int i = 0; i < 6; i++)

printf("%d", a[i]);

 

배열 a의 값을 출력합니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-05-18 13:04:05

    안녕하세요 길벗수험서 운영팀입니다.

     

    모든 코드를 해설하는 것은 시간 관계 상 어렵습니다. 주요 알고리즘 부분만을 설명해드릴테니, 해당 알고리즘을 염두에 두고 직접 값의 변화를 추적하세요.

     

    while (a[x] != 0) 

       x++;

    x--;

     

    a[x]에 0 값 처음 발견되는 위치를 파악합니다.

    반복문이 끝나면 x의 값을 1 줄여 배열 a에 값이 부여된 위치를 파악합니다.

    (0이 저장된 곳은 4번째 위치(a[4])이고, -1을 통해 배열에 3번째 위치(a[3])까지 값이 부여되어 있음을 알 수 있습니다.)

     

    m = x / 2;

    do {

    tmp = a[x];

    a[x] = a[y];

    a[y] = tmp;

    x--;

    y++;

    } while (x != m);

     

    중간값을 파악하고 중간값에 도달할 때까지 좌우의 값을 교체합니다.

     

    for (int i = 0; i < 6; i++)

    printf("%d", a[i]);

     

    배열 a의 값을 출력합니다.

     

    행복한 하루되세요 :)

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