코딩테스트 연습

[백준] 2577번 - 숫자의 갯수 (JAVA)

zzzin 2022. 2. 5. 10:57

세 개의 100~1,000 사이의 자연수를 입력받고 그 수들을 곱한 후, 결과값에 0~9까지 각각의 숫자가 몇 번씩 쓰였는지 알아내는 문제이다.

 

예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.

 

 

 


 

결과 출력 예시

 

 

 

먼저 0~9까지의 갯수를 각각 저장할 길이 10의 배열을 생성한다.

 


 

그리고 3개의 정수를 입력받아 곱한 후, 숫자의 개별적 비교를 위해 String.valueOf() 메소드를 이용하여 문자열 형식으로 변환한다.

 


 

문자열형식으로 변환된 결과값 str의 길이만큼 반복문을 수행하여 0번글자부터 charAt(인덱스)-'0' 함수를 이용하여 해당 문자열형식의 숫자의 아스키코드값을 추출한 후, 해당하는 위치의 num배열을 +한다. 여기서 주의할 점은, 아스키코드값을 이용하는 것이기 때문에 '0' 혹은 48을 빼주지 않으면 정확한 값을 얻을 수 없다는 것이다. 

 

예를 들어, A = 150, B = 266, C = 427인 상황에서 결과값의 0번째 값을 구하는 str.charAt(0)-'0'의 결과는 17037300의 첫번째 숫자인 1이기 때문에, num[1]이 +1 된다. ( num[0]이 +1되는 것이 아님에 주의! )

 

 


마지막으로 각 자리수의 0~9까지의 숫자가 저장된 num배열을 반복문을 통해 출력하면 끝!

 


 

 

정답처리 된 소스코드