본문 바로가기
Study/Algorithm_정보처리기사

[정보처리기사][알고리즘][수학] 이진수 더하기

by 푸민 2015. 8. 15.
반응형



Q. 배열 X(10)와 Y(10)에 이진수가 각각 입력되어 있다. 두 이진수의 덧셈 결과를 이진수 형태로 출력하는 순서도를 작성하되 덧셈의 결과MSB(최상위 비드)에서 올림수가 발생하면 OVERFLOW!! 라고 출력한다.


1. 이진수가 저장될 배열 X,Y와 덧셈한 결과가 누적될 배열 A를 선언한다.

 

2. 배열 X를 입력 받기 위한 반복문을 실행한다.

 

1) 덧셈할 첫번째 이진수 10자리를 입력받아 배열 X에 저장한다. 그리고 반복을 체크한다.

 

3. 배열 Y를 입력 받기 위한 반복문을 실행한다.

 

1) 덧셈할 두번째 이진수 10자리를 입력받아 배열 Y에 저장한다. 그리고 반복을 체크한다.

 

4. 변수를 초기화한다. 배열의 매 뒷자리붜 계산해야 하기 때문에 J를 10으로 초기화한다.

 

5. 배열의 X의 1자리, 배열 Y의 1자리 그리고 자리올림수를 더한다. 세 숫자를 더한 다음 오버플로우를 검사한다는 것을 생각한다.

 

6. 자리올림수가 발생했는지 판단한다. Z가 2보다 작은 경우는 올림수가 발생하지 않은 경우이므로 YES로 간다. 아니면 NO로 간다.

 

1) Yes일경우, 자리올림이 발생하지 않았으므로 자리올림수에 0을 저장한다.

 

2) 덧셈결과를 저장한다. 자리올림수가 발생하지 않은 경우는 Z가 0이나 1이라는 것을 생각한다. 그리고 7번으로 간다.

 

3) No일경우, 자리올림이 발생한 경우이므로 자리올림수에 1을 저장한다.

 

4) 덧셈결과를 저장한다. Z가 2인경우에는 0이, Z가 3인경우에는 1이 저장되어야 한다는 것을 생각한다. 그리고 7번으로 간다.

 

7. J는 배열의 위치를 지정하는 변수이며 배열의 맨 오른쪽에서 왼쪽으로 위치를 옮기며 덧셈을 수행한다는 것을 생각한다.

 

8. J가 0보다 크면 아직 덧셈 작업이 끝나지 않은것이므로 YES로 가고 아니면 모두 더했으므로 덧셈결과를 출력하기 위해 NO로 간다.

 

1) Yes인 경우, 5번으로 간다.

 

2) No인 경우, 첫번째 자리에서 자리올림이 발생했는지 확인한다. 자리올림이 발생했으명 'OVERFLOW'를 출력하고 끝내고, 아니면 A배열의 값을 출력하고 끝낸다.

 

A. Yes인경우, 배열 A에 저장된 덧셈결과를 첫번째 자리부터 맨 마지막 자리까지 출력하기 위해 J의 값을 1씩 증가시킨다.

 

B. A(J)를 출력한다.

 

C. J가 10보다 작으면 아직 출력할 내용이 남은것이므로 Yes로 가고 아니면 덧셈결과를 모두 출력한 것이므로 끝낸다.

 

A) Yes일경우, A로 간다.

 

B) No일경우, 끝낸다.



해당 글은 제가 만든 어플을 기준으로 작성하였습니다.

더 많은 정보는 알고리즘 어플을 이용해주세요.

반응형

댓글