Notice
Recent Posts
Recent Comments
Link
DY N DY
실력키우기 숫자의 개수(JAVA) 본문
1430 : 숫자의 개수
제한시간: 1Sec 메모리제한: 32mb
해결횟수: 1233회 시도횟수: 1913회
세 개의 자연수 A, B, C가 주어질 때 A×B×C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427 이라면
A × B × C = 150 × 266 × 427 = 17037300 이 되고,
계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
[Copy]150 266 427 | [Copy]3 1 0 2 0 0 0 2 0 0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | /************************************************************** Problem: 1430 User: a132034 Language: Java Result: Success Time:160 ms Memory:9308 kb ****************************************************************/ import java.util.Scanner; public class Main { private static Scanner sc; public static int [] result; public static void main(String[] args) { sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); Integer res = a*b*c; char [] resArr = res.toString().toCharArray(); //숫자를 저장할 배열 int numArr[] = new int [ 10 ]; for ( int i = 0 ; i < resArr.length; ++i) { numArr[Integer.parseInt(res.toString().substring(i, i+ 1 ))]++; } for ( int i : numArr) { System.out.println(i); } } } |
JAVA에는 참 유용한 함수가 많다.
C, C++이었다면 약간 고민했을 부분이 몇 군데 있기는 하지만
int의 wrapper class인 Integer로 a * b * c의 결과값을 받아 String으로 가져왔다.
만약 String이나 char를 사용하기 싫다면 결과값의 자릿수만큼 반복문(while이 적당할 것 같다.)을 돌며
몫을 이용하면 풀 수 있을 것 같다.
여기서는 substring을 이용해서 결과 String을 하나씩 가져와 int형으로 바꾸어 주어
값이 0일 경우 0번째 배열의 값을 +1 해주고,
값이 1일 경우 1번째 배열의 값을 +1 해주는 방법을 사용했다.
'PARK > ALGORITHM' 카테고리의 다른 글
실력키우기 수열(JAVA) (0) | 2016.04.29 |
---|---|
실력키우기 큐(JAVA) (0) | 2016.04.29 |
실력키우기 문자열찾기(JAVA) (0) | 2016.04.28 |
실력키우기 스택(JAVA) (0) | 2016.04.27 |
실력키우기 이진탐색(JAVA) (0) | 2016.04.26 |