[백준] - 단계별로 풀어보기(1차원 배열) 2577
백준 2577번
숫자의 개수
문제 출처 https://www.acmicpc.net/problem/2577
내가 작성한 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
int c = Integer.parseInt(br.readLine());
int sum=a*b*c; //3개수의 곱
String s = Integer.toString(sum);
int x = s.length(); //곱한 값의 자릿수
int y = (int)Math.pow(10,x-1); //10의 제곱근 구하기
int str[] =new int[x]; //자릿수 만큼 배열 크기 선언
str[0] = sum/y; //sum의 맨 첫번째 값을 배열 첫번째에 넣어주기
int sum2 = sum%y; //첫번째 자릿수를 구하고 나머지 값을 sum2로 고정
int z = y/10; // 두번째 자리 수를 구하기 위해 미리 10의 제곱은 한단계 낮춘다.
int str2[] =new int[10]; //0~9까지 값을 넣어주기 위한 배열 선언
for(int i=1; i<x; i++) { //str 배열에 두번째 자릿값부터 구해서 넣어주기
str[i] = (sum2)/(z);
sum2 = sum2%z;
z = z/10;
}
for(int j=0; j<10; j++) { //str2배열에 값을 모두 0으로 채우기
str2[j] =0;
}
for(int i=0; i<x; i++) { //str 배열 전체 돌기
for(int j=0; j<10; j++) { //str2배열 전체 돌기
if(j==str[i]) { //0부터 9까지 일치하는 값이 있다면
str2[j] +=1; //+1씩 증가해준다.
}
}
}
for(int v : str2) { //최종 str2 배열 출력
System.out.println(v);
}
}
}
접근 방법
일단 내가봐도 너무 복잡하게 접근해서 해결했다...다른 블로그를 보니 훨씬 간단하게 풀 수있는 문제였다. 그래도 설명을 해보자면,,,
- 우선 3개의 수를 받아서 sum에 3개의 곱을 넣는다.
- sum이 몇자리수 인지 파악하기 위해 String으로 변경하고 그 자릿수를 x에 넣는다.
- y는 sum의 (자릿수-1)만큼 10의 제곱근을 만들어준다.
ex) 3567 -> 4자리수 | 3567 / 10^3 으로 나누어야 하기 때문에 10^(x-1)- str[0] 배열에 sum의 맨 앞자리 숫자를 넣어준다.
ex) 3567 / 10^3 -> 3- 첫번째 자릿수를 구하고 나머지 값을 sum2로 고정
ex) 3567 % 10^3 -> 567 = sum2- sum2의 자릿수가 (4->3) 3자리로 줄었기 떄문에 10^3을 10으로 나누어서 10^2로 만들어주고 시작한다.
- 첫번째 for문을 통해 str배열에 하나씩 넣어준다.
- 두번째 for문은 str2배열의 값들을 0으로 우선 채워준다.
9.이중 for문을 이용하여 해당 숫자가 존재하다면 +1을 해준다.
Author And Source
이 문제에 관하여([백준] - 단계별로 풀어보기(1차원 배열) 2577), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minki513/백준-단계별로-풀어보기1차원-배열2577저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)