책 내용 질문하기
알고리즘 수학 섹션 21 과 모의고사 11회 질문합니다.
도서
2016 시나공 정보처리기사 실기
페이지
조회수
196
작성일
2016-03-31
작성자
첨부파일

섹션 11을 보면 4에 A(1)=0 이라고 되어 있는데 ..

문제와 앞에 예시 글들을 보면

A 라는 배열에는 입력되는 12자리의 값들이 나란히 배열로 입력되어 있는 것이고

B 라는 배열에는 입력되었던 12자리의 값들의 합을 다시 나란히 배열로 출력 하는 것 일텐데,

그렇다면 A(1) =0 이 아니라 B(1)=0 이 되어야 맞는 것 아닌가요 ??

애초에 12자리를 입력을 받았다고 가정을 하면 A(1) 에는 어떠한 값이든 자리를 하고 있을건데

예를 들어

999,999,999,999 라는 값이 A 라는 배열에 들어있다면 A(1) 은 9 아닌가요 ?

그런데 어떻게 A(1) 라는것이 0 이라면 이라는 조건이 달려 있는것인지

이해를 할수가 없네요.

분명 예시 에서는 A 라는 배열엔 5자리의 숫자 들을 입력 받아서

그 합들을 B 라는 배열에 저장 시키고

자리 올림수가 발생 할수 있기에 B 라는 배열을 6 으로 지정하여

A(5) , B(6) 으로 예시를 나타 내었고

B(1) 의 초기값은 자리 올림수가 아직 발생하지 않아 0 으로 된 것으로 예시를

나타낸것 같은데

정작 문제들에서는 B 가 아닌 A(1) =0 이라면~ 조건을 걸어놓앗죠..

이해가 가지 않습니다.

답변
2016-03-31 09:45:53

안녕하세요.

해당 알고리즘은 12자리의 값을 입력받아 처리하는 것입니다.

입력받을 때는 12자리를 각각 입력 받습니다.

예를 들어

먼저 첫 번째 값을 입력받습니다.

첫번째 값은 999,999,999,999가 입력된다고 가정하면

한 자리씩 12번 입력 받으므로

반복문에 의해

A(1) = 9

A(2) = 9

.

.

A(11) = 9

A(12) = 9

가 입력된 후 반복문을 빠져나와

A(1)이 0인지 확인합니다. 0이 아니므로 오른쪽 반복문으로 누적합니다.

B(3) = 9

B(4) = 9

.

.

B(13) = 9

B(14) = 9

그리고 두 번째 값을 입력받습니다.

두번째 값은 888,888,888,888이 입력된다고 가정하면

한 자리씩 12번 입력 받으므로

반복문에 의해

A(1) = 8

A(2) = 8

.

.

A(11) = 8

A(12) = 8

가 입력된 후 반복문을 빠져나와

A(1)이 0인지 확인합니다. 0이 아니므로 오른쪽 반복문으로 누적합니다.

B(3) = 17

B(4) = 17

.

.

B(13) = 17

B(14) = 17

그리고 세 번째 값을 입력받습니다.

세번째 값은 777,777,777,777이 입력된다고 가정하면

한 자리씩 12번 입력 받으므로

반복문에 의해

A(1) = 7

A(2) = 7

.

.

A(11) = 7

A(12) = 7

가 입력된 후 반복문을 빠져나와

A(1)이 0인지 확인합니다. 0이 아니므로 오른쪽 반복문으로 누적합니다.

B(3) = 24

B(4) = 24

.

.

B(13) = 24

B(14) = 24

그리고 이젠 더이상 값을 입력하지 않고 처리를 요구하기 위해

사용자가 0을 입력합니다.

이렇게 의도적으로 배열의 첫번째 값에 0을 입력하면 입력을 완료하고 이제 큰 수 더하는 실제 처리를 하게 되는 것이죠.

한 자리씩 12번 입력 받으므로

반복문에 의해

A(1) = 0

A(2) = <- 여기 부터는 0을 입력하든 값을 입력하지 않고 엔터를 치든 관계가 없습니다.

어차피 A(1)의 값이 0인지 여부에 의해 결정되기 때문이죠.

12자리가 입력된 후 반복문을 빠져나와

A(1)이 0인지 확인합니다. 0이므로 아래쪽으로 진행하여 실제 처리를 하게 되는 것입니다.

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

  • *
    2016-03-31 09:45:53

    안녕하세요.

    해당 알고리즘은 12자리의 값을 입력받아 처리하는 것입니다.

    입력받을 때는 12자리를 각각 입력 받습니다.

    예를 들어

    먼저 첫 번째 값을 입력받습니다.

    첫번째 값은 999,999,999,999가 입력된다고 가정하면

    한 자리씩 12번 입력 받으므로

    반복문에 의해

    A(1) = 9

    A(2) = 9

    .

    .

    A(11) = 9

    A(12) = 9

    가 입력된 후 반복문을 빠져나와

    A(1)이 0인지 확인합니다. 0이 아니므로 오른쪽 반복문으로 누적합니다.

    B(3) = 9

    B(4) = 9

    .

    .

    B(13) = 9

    B(14) = 9

    그리고 두 번째 값을 입력받습니다.

    두번째 값은 888,888,888,888이 입력된다고 가정하면

    한 자리씩 12번 입력 받으므로

    반복문에 의해

    A(1) = 8

    A(2) = 8

    .

    .

    A(11) = 8

    A(12) = 8

    가 입력된 후 반복문을 빠져나와

    A(1)이 0인지 확인합니다. 0이 아니므로 오른쪽 반복문으로 누적합니다.

    B(3) = 17

    B(4) = 17

    .

    .

    B(13) = 17

    B(14) = 17

    그리고 세 번째 값을 입력받습니다.

    세번째 값은 777,777,777,777이 입력된다고 가정하면

    한 자리씩 12번 입력 받으므로

    반복문에 의해

    A(1) = 7

    A(2) = 7

    .

    .

    A(11) = 7

    A(12) = 7

    가 입력된 후 반복문을 빠져나와

    A(1)이 0인지 확인합니다. 0이 아니므로 오른쪽 반복문으로 누적합니다.

    B(3) = 24

    B(4) = 24

    .

    .

    B(13) = 24

    B(14) = 24

    그리고 이젠 더이상 값을 입력하지 않고 처리를 요구하기 위해

    사용자가 0을 입력합니다.

    이렇게 의도적으로 배열의 첫번째 값에 0을 입력하면 입력을 완료하고 이제 큰 수 더하는 실제 처리를 하게 되는 것이죠.

    한 자리씩 12번 입력 받으므로

    반복문에 의해

    A(1) = 0

    A(2) = <- 여기 부터는 0을 입력하든 값을 입력하지 않고 엔터를 치든 관계가 없습니다.

    어차피 A(1)의 값이 0인지 여부에 의해 결정되기 때문이죠.

    12자리가 입력된 후 반복문을 빠져나와

    A(1)이 0인지 확인합니다. 0이므로 아래쪽으로 진행하여 실제 처리를 하게 되는 것입니다.

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

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