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

[정보처리기사][알고리즘][응용] 역순으로 숫자 더하기

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



Q. 데이터를 읽어서 역순으로 변환한 후 원래의 데이터와 더하여 출력하는 순서도를 작성하시오. 예를 들어 123456이 입력되면 654321로 변환후 원래의 수와 더하여 풀력한다. 즉, 123456 + 654321= 777777이 출력된다. 단, 입력되는 값은 6자리 정수이고 999999가 입력되면 종료한다.

1. 배열 A를 선언한다.


2. 숫자를 입력 받는다.


3. X가 999999이면 종료한다.


1) Yes일 경우, 종료한다.


2) No일 경우, 4로 간다.


4. 입력받은 값을 보존한다.


5. 숫자가 6자리 이므로 6회 반복한다. i는 배열의 첨자로 사용된다.


1) 입력받은 숫자를 10으로 나눠 몫을 구한다.


2) 나머지를 구한다.


3) 10으로 나눈 나머지를 배열에 저장한다.


4) 다음 다리를 추출하여 역순으로 만들기 위한 처리를 한다. 나머지를 자릿수로 처리했으므로 몫을 이용한다는 것을 생각한다.


6. 반복이 종료되면, M은 배열에 저장된 값을 꺼내 누적하는 변수 이므로 M을 0으로 초기화한다.


7. 숫자 앞쪽에 0이 무효의 0이기 때문에 0이 있는 자리를 제외시키기 위해 0이 아닌 자리를 찾는 반복문이다. 예를 들어 123456의 역순은 654321이므로 무효의 0이 없지만 123400이면 004321이므로 2개의 0이 무효의 숫자이다. 이때 i는 3을 가지고 반복문에서 빠져나온다.


1) 0인지 판단하여 0이면 계속 0이 아닌 값을 찾기 위해 Yes로 가고 아니면 8로 간다.


8. 반복문이 끝나거나 No일 경우, 역순으로 분리된 각 자리에 10을 곱해 합치는 반복문이다. 숫자가 6자리이므로 다섯번만 반복한다. 마지막 자리인 A(6)은 일의 자리이기 때문에 그냥 더해주면 된다. 반복변수 J가 i에서 시작하는데, i는 숫자 앞쪽에 0이 있을 경우 0을 제외시킨 자리이다.


1) 합계 M에 A(J)를 누적한다.


2) 자릿수에 맞게 복원하기 위해 10을 곱한다.


9. 반복이 종료되면, 합계에 일의 자리 값을 누적한다. 일의자리는 배열의 몇 번째 자리에 들어 있는지 생각한다.


10. 역 순으로 바꾼 숫자와 원래의 숫자를 더한다.


11. K, M, X를 출력한 후 숫자를 입력받는다.


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

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

반응형

댓글