프로그램 명: frequency
수 N (0 <= N <= 25) 을 입력으로 받아 N ! 의 빈도수를 출력하는게 문제이다.
입력
수 N 이 입력으로 주어진다.
출력
각 자리의 빈도수가 출력 예의 형식으로 출력 된다.
입출력 예
입력
1
출력
1! --
(0) 0 (1) 1 (2) 0 (3) 0 (4) 0
(5) 0 (6) 0 (7) 0 (8) 0 (9) 0
입력
5
출력
5! --
(0) 1 (1) 1 (2) 1 (3) 0 (4) 0
(5) 0 (6) 0 (7) 0 (8) 0 (9) 0
입력
10
출력
10! --
(0) 2 (1) 0 (2) 1 (3) 1 (4) 0
(5) 0 (6) 1 (7) 0 (8) 2 (9) 0
sol)
import java.util.Scanner;
class Main{
static long fac(long s){ //재귀함수 이용하여 팩토리얼 계산
if(s!=1){
s=s*fac(s-1);
}
return s;
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int a=sc.nextInt(); //계산할 수 입력받음
String temp="";
String fre=""+fac(a); //팩토리얼 계산한 정수값을 문자열로 변환
for(int i=0;i<fre.length();i++){
temp+=fre.charAt(i); //문자열로 변환된 값을 인덱스별로 잘라서 temp변수에 저장
}
long[][] num1=new long[10][3]; //빈도수 계산한 숫자를 저장할 2차원배열 선언
System.out.println("계산값:"+temp); //계산값 출력해보기
for(int num=0 , w=1;num<num1.length;num++){ //0~9번까지의 빈도수 확인을 위한 for문
for(int n=0; n<temp.length();n++){ //temp변수에 저장된 문자열 길이만큼 for문돌려서
if(num==Integer.parseInt(String.valueOf(temp.charAt(n)))){ //0~9번값(num)과 같다면
num1[num][0]+=w; //그값과 같은 인덱스 배열num1[num][0]에 숫자증가
}
}
}
for(int aa =0; aa<10; aa++) //빈도수 확인 위한 출력 for문
System.out.print("("+aa+")"+num1[aa][0]+"\t");
}
}
'개발하자 > JAVA문제풀이' 카테고리의 다른 글
2진수 IP주소를 10진수로 바꾸기 (0) | 2015.01.06 |
---|---|
그릇높이계산 (0) | 2015.01.06 |
윷놀이 (0) | 2015.01.06 |
버블정렬(재귀함수 사용) (0) | 2015.01.06 |
이진수로 변경하는 프로그램작성(재귀함수 이용) (0) | 2015.01.06 |