2016. 12. 7. 23:08ㆍAlgorithm Solution
<숫자의 갯수>
세개의 숫자가 있는데 그것을 다 곱해서 나온 값을 가지고 숫자가 몇개 있는지 세는 프로그램이다.
일단 문제는 아래와 같다.
문제
일단 3개의 숫자를 받고 곱한다음에 result 변수에 저장하였다.
그리고 나는 result를 String으로 변환하였고, char[]을 만들어서 각각 자릿수마다 배열에 저장하였다.
그러고나서 char[] ch 배열의 값을 int형으로 바꾸기 위해 - '0'을 하였다.
(char 값은 '5'-'0'을 하면 int형 5로 변환할 수 있다.)
그리고 그 변환된 값은 number[변환된 값]++ 을 하였다. 기본값은 0이기 때문이다.
즉 number의 index값은 숫자이고 그 index값 안에 저장되어있는 값은 숫자의 갯수를 뜻한다.
간단히 이야기 하면 number[숫자] = 숫자의 갯수 이다.
그리고 마지막으로 number[] 배열을 출력하면 된다.
<java>
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 | import java.util.Scanner; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); int num2 = sc.nextInt(); int num3 = sc.nextInt(); int result= num1* num2* num3; String str = Integer.toString(result);//int to String char[] ch= str.toCharArray(); //String to char int[] number= new int[10]; for(int i=0; i<ch.length;i++) {//해당되는 숫자 갯수 증가 number[ch[i]-'0']++; } for(int a: number) {//각 숫자 갯수 출력 System.out.println(a); } } } | cs |
다른 사람들의 소스를 보니 더욱더 간단한 방법이 있었다. 나의 경우에는 시간복잡도가 아마 떨어질거 같다. 아무래도 String형과 char형으로 바꾸고 다시 int형으로 바꾸는 작업만 해도 느리게 작동 될 것이다.
다른 고수들은 저 while문에서 바로 끝냈다. 그것은 result 값에서 나머지값을 구한다음에 그 나머지값의 저장된 값을 증가하는 것이다.
(number[나머지값]= 숫자의 갯수)
그리고나서 result= result/10을 하고 또 while문을 돌면 각각 자릿수의 숫자를 구할 수 있었다.
여태까지 이런 쉬운방법을 모르고 있었다니...오늘 정말 많이 배운다. 문제 자체는 어렵지 않았지만 효율성면에서는 많이 반성해야할듯!
밑에 소스이다!
<java>
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 | import java.util.Scanner; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); int num2 = sc.nextInt(); int num3 = sc.nextInt(); int result= num1* num2* num3; int[] number= new int[10]; while(result>0) { number[result%10]++; result/=10; } for(int a: number) {//각 숫자 갯수 출력 System.out.println(a); } } } | cs |
'Algorithm Solution' 카테고리의 다른 글
백준 1193 분수찾기 (0) | 2016.12.16 |
---|---|
숫자 팰린드롬(palindrome) (0) | 2016.12.12 |
백준 1152번 단어의 갯수 세기 문제<java> (0) | 2016.12.07 |
Prime Number(소수) 구하기 java (0) | 2016.01.13 |
피보나치 수열 구하기 (0) | 2016.01.10 |