Algorithm

[Java] 백준 문제 2577 숫자의 개수

isaac.kim 2022. 4. 21.
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
반응형