728x90
반응형
[Java] 백준 문제 2577 숫자의 개수
백준 사이트의 배열 파트의 문제이다.
문제 2577
전체 소스코드
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n[] = new int [3];
String convertN = "";
int nm = 0;
for (int i = 0; i < 3; i++) n[i] = sc.nextInt();
nm = n[0] * n[1] * n[2];
convertN = Integer.toString(nm);
// 0 ~ 9 까지의 개수 카운트를 할 변수 세팅
int cnt[] = new int [10];
Arrays.fill(cnt, 0);
// 문자열 길이 만큼 check
for (int j = 0; j < convertN.length(); j++ ) {
// 한 글자씩 cut
String s = convertN.substring(j, j+1);
// 해당 인덱스에 ++ 연산
cnt[Integer.parseInt(s)] ++;
}
// 출력
for (int k = 0; k < 10; k++) {
System.out.println(cnt[k]);
}
sc.close();
}
}
알고리즘 문제는 우선 다른 사람들의 코드를 보지 않고 풀어보는 것이 중요하다. 직접 작성한 코드라서 부족한 부분이 있을 수도 있고, 다른 방법으로 문제를 푸시는 분들도 있을 것이다. 이 글을 보시는 분께서 더 효율적인 방법이 확인되면 댓글로 지적해주시면 감사할 것 같다.
우선 3개의 정수를 입력받는다.
Scanner sc = new Scanner(System.in);
int n[] = new int [3];
for (int i = 0; i < 3; i++) n[i] = sc.nextInt();
Scanner 클래스는 Java에서 입력을 받는 클래스로 정수들을 입력받기 위해 생성하여 사용한다.
3개의 배열을 생성하여 반복문으로 sc.nextInt()를 호출하여 배열에 정수 3개를 입력받는다.
String convertN = "";
int nm = 0;
nm = n[0] * n[1] * n[2];
convertN = Integer.toString(nm);
// 0 ~ 9 까지의 개수 카운트를 할 변수 세팅
int cnt[] = new int [10];
Arrays.fill(cnt, 0);
입력받은 3개의 정수의 곱을 구하고, 문자로 치환한다. 왜냐하면 한 글자씩 확인하기 위해 문자열로 치환했다.
다른 생각나는 방법으로는 정수들의 곱 값을, 최대 자릿수로 부터 나누기 10 씩해서 구하는 방법이 있을 것으로 보인다.
그리고 0 ~ 9 까지의 숫자를 카운트할 변수를 세팅한다. Arrays.fill 이라는 Java.util.Arrays 클래스를 사용해서 배열의 모든 값을 0으로 초기화 하였다.
// 문자열 길이 만큼 check
for (int j = 0; j < convertN.length(); j++ ) {
// 한 글자씩 cut
String s = convertN.substring(j, j+1);
// 해당 인덱스에 ++ 연산
cnt[Integer.parseInt(s)] ++;
}
// 출력
for (int k = 0; k < 10; k++) {
System.out.println(cnt[k]);
}
sc.close();
문자열의 길이 만큼 반복을 하고, 한 글짜씩 확인을 하는데, 숫자로 변형하여 해당 인덱스에 ++ 후의 연산을 하여 +1 연산을 하였다.
마지막으로 반복문으로 출력하고, Scanner sc 객체를 소멸시킨다.
도움이 되셨다면 광고 꾸욱!!
728x90
반응형
'Algorithm' 카테고리의 다른 글
[Java] 백준 문제 1546 평균 (0) | 2022.04.23 |
---|---|
[Java] 백준 문제 3052 - 나머지 (0) | 2022.04.21 |
[Java] 백준 문제 2562 최댓값 (0) | 2022.04.20 |
[Java] 백준 10818 최소, 최대 (0) | 2022.04.19 |
[Java]백준-문제-단계별로 풀어보기-3 (Part 3) (0) | 2022.04.14 |