1번문제 2번문제 정답지보다 상세한 풀이과정좀 알려주세요,, 디버깅이랑 코드 해석 상세히 부탁드려요! 디버깅 라인맞춰서 알려주시면 감사하겠습니다
안녕하세요 길벗수험서 운영팀입니다.
모든 코드를 해설하는 것은 시간 관계 상 어렵습니다. 주요 알고리즘 부분만을 설명해드릴테니, 해당 알고리즘을 염두에 두고 직접 값의 변화를 추적하세요.
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의 값을 출력합니다.
행복한 하루되세요 :)