[백준 2577번] 숫자의 개수
[백준 2577번] 숫자의 개수
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 | package _1월_3주차; import java.util.Scanner; public class 백준_손수경_정답_2577 { public static void main(String[] args) { //sol 2. 문자형으로 전환 후 대입 & 비교 Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); String mul = String.valueOf(a * b * c); //String.valueOf -> 정수를 문자열로 변환 int[] cnt = new int[10]; for (int i = 0; i < mul.length(); i++) { for (int j = 48; j < 58; j++) { if (mul.charAt(i) == j) { // Integer.parseInt(arrayMul[i])을 통해서 정수형으로 비교해주면 계속 틀렸습니다. 라고 뜸,, 아스키 코드를 통해서 비교가 필요한듯 cnt[j - 48]++; } } } for (int i = 0; i < 10; i++) { System.out.println(cnt[i]); } } } /* sol 1. 숫자형 그대로 개수세기 -> 틀렸습니다.라고 뜸,, Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); int mul = a * b * c; int temp; int[] numCnt = new int[10]; while (true) { temp = mul % 10; mul /= 10; for (int i = 0; i < 9; i++) { if (temp == i) { numCnt[i]++; } } if (mul == 0) { break; } } for (int i = 0; i < 10; i++) { System.out.println(numCnt[i]); } } */ | cs |
이 문제는 다양한 방법으로 풀어봄,,,계속 틀렸다고 나왔기 때문이다…(사실 백준이 정확히 원하는 방법으로 풀었을 때만 맞았다고 나오기 때문이다,,)여튼 이 문제에서 원하는 방식은 정수형을 문자형을 바꾼 다음에 아스키 코드 를 이용하여서 비교하는 방식이다.
배운점
문자열에서는 배열처럼 인덱스를 사용할 수 없다. 따라서 문자열에서 문자 하나하나를 비교하기 위해서는 charAt(인덱스) 를 이용해 주어야 한다.
댓글남기기