개발자/문제풀이 (Java)
[백준/BOJ] 2577번 숫자의 개수 (java)
devBB
2018. 2. 6. 13:16
728x90
반응형
백준 온라인 저지(BOJ) 2577번 숫자의 개수
https://www.acmicpc.net/problem/2577
2577번: 숫자의 개수
첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.
www.acmicpc.net
* 사용언어 : java, 자바
1. 문제
세 개의 자연수를 입력받아 곱한 결과에서
0부터 9까지 숫자가 각각 몇 번 쓰였는지 출력
2. 풀이
두 가지 방식으로 풀었습니다.
본인에게 편한 방식으로 이해하고 활용해보세요.
(두 가지 방식 다 크게 어렵지 않으니 모두 해보시는 것도 좋을 것 같습니다.)
1) % 연산자 이용
숫자를 10으로 나눈 나머지는 1의 자리의 수가 됩니다.
이렇게 나머지를 구하여 0~9 인덱스를 가지는 배열에 카운트를 더하고,
실제 숫자를 10으로 나눕니다.
그리고 while을 사용하여 나눈 숫자가 0보다 큰 동안 반복하여 진행하였습니다.
2) String 클래스 이용
아래 3개 함수를 활용하여, 문자열로 1글자씩 처리하였습니다.
- valueOf(number) : 해당 number를 String으로 변환하여 반환합니다.
- length() : 문자열의 길이를 반환합니다.
- charAt(index) : 해당 문자열의 index에 위치한 문자를 char 형으로 반환합니다.
3. 코드
1)
import java.util.Scanner;
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();
sc.close();
int[] counts = new int[10];
int number = A * B * C;
while (number > 0) {
counts[number % 10]++;
number /= 10;
}
for (int i = 0; i < counts.length; ++i) {
System.out.println(counts[i]);
}
}
}
2)
import java.util.Scanner;
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();
sc.close();
int[] counts = new int[10];
String input = String.valueOf(A * B * C);
for (int i = 0; i < input.length(); ++i) {
counts[input.charAt(i) - '0']++;
}
for (int i = 0; i < counts.length; ++i) {
System.out.println(counts[i]);
}
}
}
* char 형 문자를 int 형 정수로 변환하기 위해 '0' 을 빼주었습니다.
728x90
반응형