책 내용 질문하기
2016 시나공 정보처리기사 실기 p259 질문있습니다.
도서
2016 시나공 정보처리기사 실기
페이지
259
조회수
284
작성일
2016-04-13
작성자
첨부파일

p259 모의고사 3회 마지막 빈칸에 대해서 알고 싶습니다.

왜 NMG = J + ( ) + 1 인데 빈칸에 A(5)가 들어가는지...

문제에서 4명의 소유주가 가지는 갯수와 나머지를 구하는 것 같은데 마지막에 어떻게 되는 것인지 모르겠습니다.

아무것도 아닌 부분을 가지고 고민하는 것은 아닌지 의심스럽지만 도저히 해결이 안되네요. ㅠㅠ 부탁드립니다~

답변
2016-04-14 09:43:21

안녕하세요.

240p 알고리즘의 이해에서와 같이 사과의 개수를 1021이라고 한다면(문제의 조건을 만족하는 값이 1021입니다.)

J = 1021, K = 1

첫 번째 사람(A)이 사과를 4등분(255,255,255,255) 하고 나머지를 계산합니다.

NMG는 1

4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 1020

배열의 위치 증가 N = N + 1, N은 1

4등분 중 한 몫을 첫 번째 사람(A)이 가져가므로 A(1)은 255

4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

J = (1020 * 3) / 4 = 765

J = 765, K = 2

첫 번째 사람(B)이 사과를 4등분(191,191,191,191) 하고 나머지를 계산합니다.

NMG는 1

4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 764

배열의 위치 증가 N = N + 1, N은 2

4등분 중 한 몫을 두 번째 사람(B)이 가져가므로 A(2)은 191

4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

J = (764 * 3) / 4 = 573

J = 573, K = 3

첫 번째 사람(C)이 사과를 4등분(143,143,143,143) 하고 나머지를 계산합니다.

NMG는 1

4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 572

배열의 위치 증가 N = N + 1, N은 3

4등분 중 한 몫을 세 번째 사람(C)이 가져가므로 A(3)은 143

4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

J = (573 * 3) / 4 = 429

J = 429, K = 4

첫 번째 사람(D)이 사과를 4등분(107,107,107,107) 하고 나머지를 계산합니다.

NMG는 1

4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 428

배열의 위치 증가 N = N + 1, N은 4

4등분 중 한 몫을 네 번째 사람(D)이 가져가므로 A(4)은 107

4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

J = (428 * 3) / 4 = 321

문제의 조건에 마지막 D가 자기 몫을 가지고 간 후 나머지를 4등분해 보아 나머지가 1인지도 확인해 봐야 하므로

인원은 4명이지만 위 작업은 5번을 반복해야 합니다. 그래서 K < 5 때까지 반복하는 것이죠

그래서 한 번 더 반복하면

J = 321, K = 5

확인 반복을 위해 사과를 4등분(80,80,80,80) 하고 나머지를 계산합니다.

NMG는 1, 나머지가 1인지 확인이 되었지만 반복 과정에서의 작업은 그대로 이어서 수행합니다.

4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 320

배열의 위치 증가 N = N + 1, N은 5

4등분 중 한 몫을 다섯 번째 배열에 넣으므로 A(5)는 80

4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

J = (320 * 3) / 4 = 240

이제 K가 5보다 작지 않으므로 아래쪽으로 내려와

NMG = J + A(5) + 1을 계산합니다.

이는 4명이 가져간 후 남은 사과도 조건에 만족하는지 처리한 다섯 번째 과정을 복귀하는 것으로

J는 다섯 번째 과정에서 얻은 240

A(5)는 다섯 번째 과정에서 챙긴 한 사람 몫 80

그리고 +1은 남은 1개를 먹은 것 1

그래서 NMG는 240+80+1 = 321이 됩니다.

즉 다섯 번째를 반복하기 전 J 값이 되는 것이죠.

하지만 확인을 위해 다섯 번째 작업을 수행하였으므로 확인이 완료된 후 그 전 값으로 복귀하는 과정을 수행한 것입니다.

오늘도 즐거운 하루 되세요.

  • *
    2016-04-14 09:43:21

    안녕하세요.

    240p 알고리즘의 이해에서와 같이 사과의 개수를 1021이라고 한다면(문제의 조건을 만족하는 값이 1021입니다.)

    J = 1021, K = 1

    첫 번째 사람(A)이 사과를 4등분(255,255,255,255) 하고 나머지를 계산합니다.

    NMG는 1

    4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 1020

    배열의 위치 증가 N = N + 1, N은 1

    4등분 중 한 몫을 첫 번째 사람(A)이 가져가므로 A(1)은 255

    4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

    J = (1020 * 3) / 4 = 765

    J = 765, K = 2

    첫 번째 사람(B)이 사과를 4등분(191,191,191,191) 하고 나머지를 계산합니다.

    NMG는 1

    4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 764

    배열의 위치 증가 N = N + 1, N은 2

    4등분 중 한 몫을 두 번째 사람(B)이 가져가므로 A(2)은 191

    4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

    J = (764 * 3) / 4 = 573

    J = 573, K = 3

    첫 번째 사람(C)이 사과를 4등분(143,143,143,143) 하고 나머지를 계산합니다.

    NMG는 1

    4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 572

    배열의 위치 증가 N = N + 1, N은 3

    4등분 중 한 몫을 세 번째 사람(C)이 가져가므로 A(3)은 143

    4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

    J = (573 * 3) / 4 = 429

    J = 429, K = 4

    첫 번째 사람(D)이 사과를 4등분(107,107,107,107) 하고 나머지를 계산합니다.

    NMG는 1

    4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 428

    배열의 위치 증가 N = N + 1, N은 4

    4등분 중 한 몫을 네 번째 사람(D)이 가져가므로 A(4)은 107

    4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

    J = (428 * 3) / 4 = 321

    문제의 조건에 마지막 D가 자기 몫을 가지고 간 후 나머지를 4등분해 보아 나머지가 1인지도 확인해 봐야 하므로

    인원은 4명이지만 위 작업은 5번을 반복해야 합니다. 그래서 K < 5 때까지 반복하는 것이죠

    그래서 한 번 더 반복하면

    J = 321, K = 5

    확인 반복을 위해 사과를 4등분(80,80,80,80) 하고 나머지를 계산합니다.

    NMG는 1, 나머지가 1인지 확인이 되었지만 반복 과정에서의 작업은 그대로 이어서 수행합니다.

    4등분하고 남은 1개를 먹어야 하므로 J = J - 1, J는 320

    배열의 위치 증가 N = N + 1, N은 5

    4등분 중 한 몫을 다섯 번째 배열에 넣으므로 A(5)는 80

    4등분 한 것에서 한 사람의 몫을 가져갔으니 그 값을 빼야 하므로 J = J * 3 /4 (한 사람의 몫이 1/4이므로)

    J = (320 * 3) / 4 = 240

    이제 K가 5보다 작지 않으므로 아래쪽으로 내려와

    NMG = J + A(5) + 1을 계산합니다.

    이는 4명이 가져간 후 남은 사과도 조건에 만족하는지 처리한 다섯 번째 과정을 복귀하는 것으로

    J는 다섯 번째 과정에서 얻은 240

    A(5)는 다섯 번째 과정에서 챙긴 한 사람 몫 80

    그리고 +1은 남은 1개를 먹은 것 1

    그래서 NMG는 240+80+1 = 321이 됩니다.

    즉 다섯 번째를 반복하기 전 J 값이 되는 것이죠.

    하지만 확인을 위해 다섯 번째 작업을 수행하였으므로 확인이 완료된 후 그 전 값으로 복귀하는 과정을 수행한 것입니다.

    오늘도 즐거운 하루 되세요.

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