공부했던 자료 정리하는 용도입니다.
재배포, 수정하지 마세요.
빈도수 구하기
배열 활용을 활용해서 빈도수를 구하는 프로그램이다. 간단하게 숫자로 구현했다. 숫자로 된 문자열을 입력하면 0 ~ 9 까지의 숫자가 각각 몇 개나 나왔는지 세고 직관적으로 대소를 판별할 수 있게 나온 횟수만큼 # 이 출력되도록했다.
int 타입의 배열인 arr 을 선언해서 횟수를 모두 0 으로 초기화한다.(특정한 값으로 초기화하지 않고 int 형 배열을 선언하면 모든 배열 요소가 자동적으로 default 값인 0 으로 초기화된다.) 입력받은 문자열을 한 글자씩 떼서 int 형으로 변환한 뒤에 arr 의 index 와 비교한다. 만약 index 와 값이 같다면 해당 배열의 index 가 가리키는 곳의 값을 1 증가시킨다. 문자열 검사가 모두 끝나면 for 문으로 각각의 index 가 가리키는 값의 크기만큼 # 을 반복 출력한다.
package Example;
import java.util.*; //Scanner 클래스를 사용하기 위한 import
public class Example {
public static void main(String[] args) {
int[] arr = new int[10];
char tmp = ' ';
Scanner scanner = new Scanner(System.in); //입력을 받기 위한 Scanner클래스의 객체 생성
System.out.print("숫자를 입력해주세요 : ");
String input = scanner.nextLine(); //String타입 변수인 input에 입력받은 문자열 저장
for(int i = 0 ; i < input.length() ; i++) { //입력받은 문자열의 길이만큼 반복문 수행
tmp = input.charAt(i); //문자열을 한글자씩 떼어내서 char형 변수인 tmp에 저장
for(int j = 0 ; j < arr.length ; j++) { // arr배열에 선언한 0 ~ 9 까지의 숫자와 tmp를 비교하기 위한 반복문
if((tmp - '0') == j) //만약 tmp를 숫자로 변환한 결과(tmp - '0')가 j와 같다면
arr[j] += 1; //j번째의 수의 횟수를 1증가시킴
}
}
for(int i = 0 ; i < arr.length ; i++) { //최종 결과를 출력하기 위한 반복문
System.out.print(i + " => " + arr[i] + " 번 ");
for(int j = 0 ; j < arr[i] ; j++) { // arr배열을 출력하기 위한 반복문
System.out.print("#"); //횟수만큼 #을 출력한다.
}
System.out.println();
}
}
}
'Back end > Java 문제' 카테고리의 다른 글
[Java] 배열회전 (0) | 2019.07.10 |
---|---|
[Java] 빙고게임 (0) | 2019.07.08 |
[Java] 배열 정렬(sort) (0) | 2019.07.03 |
[Java] 총합, 평균, 최대, 최소 (0) | 2019.06.26 |
[Java] for문을 활용한 별(*)찍기 (1) | 2019.06.19 |