본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] 13. 학생 성적 정보 분석하기

by 제이투더문 2024. 6. 26.

 

 13번 문제가 Bonus 02번과 굉장히 비슷하여 이어서 포스팅하겠습니다. 이번에는 학생들의 성적 정보를 문자열로 받아 각 성적 별 학생 수를 출력하는 프로그램을 작성해 보겠습니다. 이 예제는 문자열을 다루는 방법과 조건문을 활용하여 원하는 정보를 추출하는 방법을 익히는 데 도움이 될 것입니다. 비전공자도 쉽게 이해할 수 있도록 최대한 간단하게 설명하겠습니다.

 

 

[Java Festival 13] 학생 성적 정보 분석하기

아래와 같이 학생들의 성적정보가 문자열로

선언되어 있을 때 각 성적 별 학생 수를 출력하시오.

 

 

 

 

 먼저 간단하게 작성한 코드를 보겠습니다.

package Ex;

public class Ex13 {
    public static void main(String[] args) {
        String score = "A,A,B,C,D,A,C,D,D,D,F";
        
        // 성적 문자열을 콤마(,)로 분리하여 배열에 저장
        String[] str = score.split(",");
        
        // 각 성적의 학생 수를 저장할 변수 초기화
        int aCnt = 0, bCnt = 0, cCnt = 0, dCnt = 0, fCnt = 0;
        
        // 성적 배열을 순회하면서 각 성적의 학생 수를 증가시킴
        for (String string : str) {
            switch (string) {
                case "A":
                    aCnt++;
                    break;
                case "B":
                    bCnt++;
                    break;
                case "C":
                    cCnt++;
                    break;
                case "D":
                    dCnt++;
                    break;
                case "F":
                    fCnt++;
                    break;
            }
        }
        
        // 결과 출력
        System.out.println("A : " + aCnt + "명");
        System.out.println("B : " + bCnt + "명");
        System.out.println("C : " + cCnt + "명");
        System.out.println("D : " + dCnt + "명");
        System.out.println("F : " + fCnt + "명");
    }
}

 

1. 성적 문자열 분리

성적 문자열을 콤마(,)로 분리하여 배열에 저장합니다.

  • String[] str = score.split(",");: 문자열을 콤마(,)로 분리하여 배열에 저장합니다.

 

2. 각 성적의 학생 수를 저장할 배열 초기화

각 성적의 학생 수를 저장할 배열을 초기화합니다.

  • int[] counts = new int[5];: 각 성적의 학생 수를 저장할 배열을 생성합니다. 배열의 인덱스는 각각 A, B, C, D, F에 대응합니다.

 

3. 성적 배열을 순회하면서 학생 수 카운트

성적 배열을 순회하면서 각 성적의 학생 수를 카운트합니다.

  • switch (grade): 성적에 따라 해당하는 배열의 인덱스를 증가시킵니다.

 

4. 결과 출력

배열에 저장된 각 성적의 학생 수를 출력합니다.

  • System.out.println(...): 각 성적의 학생 수를 출력합니다.

 

각 성적의 학생 수를 출력하는 부분을 배열을 사용해서 처리하는 방법도 있습니다.

package Ex;

public class Ex13 {
    public static void main(String[] args) {
        String score = "A,A,B,C,D,A,C,D,D,D,F";
        
        // 성적 문자열을 콤마(,)로 분리하여 배열에 저장
        String[] str = score.split(",");
        
        // 각 성적의 학생 수를 저장할 배열 초기화 (A=0, B=1, C=2, D=3, F=4)
        int[] counts = new int[5];
        
        // 성적 배열을 순회하면서 학생 수를 증가시킴
        for (String grade : str) {
            switch (grade) {
                case "A":
                    counts[0]++;
                    break;
                case "B":
                    counts[1]++;
                    break;
                case "C":
                    counts[2]++;
                    break;
                case "D":
                    counts[3]++;
                    break;
                case "F":
                    counts[4]++;
                    break;
            }
        }
        
        // 결과 출력
        System.out.println("A : " + counts[0] + "명");
        System.out.println("B : " + counts[1] + "명");
        System.out.println("C : " + counts[2] + "명");
        System.out.println("D : " + counts[3] + "명");
        System.out.println("F : " + counts[4] + "명");
    }
}

 

마무리

 이번 예제에서는 학생들의 성적 정보를 문자열로 받아 각 성적 별 학생 수를 출력하는 방법을 배웠습니다. 이를 통해 문자열을 분리하고, 각 항목을 카운트하는 방법을 익힐 수 있었습니다. 배열을 활용하여 더 간단하게 문제를 해결하는 방법도 배웠습니다.

 

 프로그래밍에서 문자열을 다루는 능력은 매우 중요합니다. 특히 이번 예제처럼 간단한 문제를 해결하면서도 문자열과 배열의 사용법을 익히는 것은 실무에서도 유용하게 쓰일 수 있습니다. 다양한 문제를 풀어보며 실력을 키워나가길 바랍니다.

프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 흥미롭고 유익한 내용을 준비하여 여러분의 학습을 돕겠습니다. 감사합니다!