10자리의 정수를 입력받아서, 각 자리수가 짝수인 경우와 홀수인 경우, 그리고 0인 경우를 헤아려서 표시하라
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. 실행 화면을 보시면 결과 값이 제대로 나오고 있지만, 입력하는 숫자를 크게 하면 오류가 나오기 때문에 제대로 완성하지 못했습니다.
'프로그래밍 실습 > 자바(Java)' 카테고리의 다른 글
| 숫자 873의 약수를 모두 구하라. 모두 합하면 얼마이며, 또한 그들의 평균은 얼마인가 ? (0) | 2010.05.13 |
|---|---|
| 1부터 숫자들을 곱하면 최초로 7000을 넘는 정수와 곱한 수는 얼마인가 ? (0) | 2010.05.13 |
| Scanner객체를 이용하여 3개의 숫자를 입력 받아서 최대값과 최소값을 구하고 평균값과의 차이를 구하는 프로그램을 작성하여라. (0) | 2010.05.13 |
| 1부터 100까지 3의 배수만을 더하는 프로그램을 작성하라. 단, 9의 배수는 더 하지 않는다. (0) | 2010.05.13 |
| 1부터 100까지 사이의 소수(Prime number)를 표시하는 프로그램을 작성 하라. (0) | 2010.05.13 |
