반응형

10자리의 정수를 입력받아서, 각 자리수가 짝수인 경우와 홀수인 경우, 그리고 0인 경우를 헤아려서 표시하라.(나머지 연산을 사용할 것)

( : 4355650974 -> 짝수 : 3, 홀수 : 6, 0:한 개)

 

5-1. 해법 정리

 

1)    숫자 및 짝수/홀수/제로 카운터 초기화

2)    각 자릿수를 저장할 num 배열 초기화

3)    정수 입력 받기

4)    반복문을 통해 i 인덱스 증가

5)    Num[i] 위치에 입력 받은 정수를 10의 배수로 나눈 결과를 저장(자릿수 저장)

6)    짝수, 홀수, 제로인지를 판별하는 if문을 통해 각 카운터를 증가

7)    결과 출력

 

5-2. 풀이 과정

 

먼저 해당 자릿수의 숫자를 알아 내는 것이 급했기 때문에, 입력받은 글자의 자릿수를 num[i]배열에 저장했습니다. 저장 방식은 해법 정리에 나온 것과 같은데, 입력받은 글자(number) 10의 배수(자릿수만큼)로 나누는 방법입니다.



 

그렇게 뽑아낸 해당 자릿수를 2로 나누어 떨어지는지 확인(/홀수 판별)하고 제로인지 판가름해서 각각의 카운터에 증가시키는 방법을 이용했습니다.


 

 

5-3. 소스 코드

 

 

 

 


5-4. 실행 화면

 


 

 

5-5. 시행 착오

 

아직 제가 각 자릿수를 배열에 저장하는 것을 시도해 보지 않았을 때, 대략적인 방법은 머릿속에 있었지만 구체적인 방법을 적용하는 데 시간이 소모되었습니다. 우리가 해결하고자 하는 문제는 현실 세계에서 사용하고 있는 10진법을 이용한 정수이기 때문에, 10의 배수라는 점을 이용해서 각 자릿수를 알아낼 수 있을 거라는 생각을 했습니다.



 

궁리한 끝에 숫자를 입력받고, 해당 숫자를 for 구문 안에서 10의 배수(10 10승부터 1까지)로 나눈 값을 num[i] 위치에 저장하는 방법을 택했습니다.


하지만 지금도 숫자가 조금만 커져도 아래와 같이 크기가 초과했다는 오류가 나와서 해당 변수를 Double 형으로도 선언해 보고, 스캐너 함수를 쓸 때 nextDouble로 적어 보기도 했지만 여전히 문제를 해결하지 못한 상태입니다.  5-4. 실행 화면을 보시면 결과 값이 제대로 나오고 있지만, 입력하는 숫자를 크게 하면 오류가 나오기 때문에 제대로 완성하지 못했습니다.


반응형
,