remagine
알고리즘 풀기 (5) 숫자의 갯수 (매우 쉬움) 본문
세 개의 자연수 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번 쓰였다.
1. 첫번째 풀이
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | package dd; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; /** * @author Arthur * */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); int C = sc.nextInt(); int D = A*B*C; String result = String.valueOf(D); int zero = 0; int one = 0; int two = 0; int three = 0; int four = 0; int five = 0; int six = 0; int seven = 0; int eight = 0; int nine = 0; for(int i = 0; i < result.length() ; i++){ char z = result.charAt(i); String stringifyChar = String.valueOf(z); switch (stringifyChar){ case "0" : zero++; break; case "1" : one++; break; case "2" : two++; break; case "3" : three++; break; case "4" : four++; break; case "5" : five++; break; case "6" : six++; break; case "7" : seven++; break; case "8" : eight++; break; case "9" : nine++; break; default : break; } } System.out.println(zero); System.out.println(one); System.out.println(two); System.out.println(three); System.out.println(four); System.out.println(five); System.out.println(six); System.out.println(seven); System.out.println(eight); System.out.println(nine); } } | cs |
너무길다. 배열을 써보자
2. 개선한 풀이
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 | /** * @author Arthur * */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); int C = sc.nextInt(); int D = A*B*C; String result = String.valueOf(D); int[] array = new int[10]; for(int i = 0; i < result.length() ; i++){ array[Integer.parseInt(String.valueOf(result.charAt(i)))]++; } for(int i = 0; i < 10 ; i++){ System.out.println(array[i]); } } | cs |
3. 멋진 풀이
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 | import java.util.Scanner; /** * @author not me * */ public class Main { static int[] numCountsArr = new int[10]; public static void main(String args[]) { Scanner scan = new Scanner(System.in); int multipleNums = scan.nextInt() * scan.nextInt() * scan.nextInt(); scan.close(); while (multipleNums > 0) { int num = multipleNums % 10; numCountsArr[num]++; multipleNums /= 10; } for (int numCounts : numCountsArr) { System.out.println(numCounts); } } } | cs |
'알고리즘' 카테고리의 다른 글
알고리즘 풀기 (7) 알파벳 찾기 (쉬움) (0) | 2017.06.29 |
---|---|
알고리즘 풀기 (6) OX퀴즈 (쉬움) (0) | 2017.06.27 |
알고리즘 풀기 (4) 외국계 기업 면접문제 (쉬움) (0) | 2017.06.26 |
알고리즘 풀기(3) 쉬운 면접문제 (약간 쉬움) (0) | 2017.06.26 |
알고리즘 풀기 (2) 한수 (0) | 2017.06.23 |
Comments