Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java로 문자열 내 특정 문자의 빈도수 찾는 방법

이 글에서는 문자열(String) 안에 특정 문자가 몇 번 등장하는지 빈도수를 계산하는 방법을 알아봅니다. 문자열이란 하나 이상의 문자로 구성되어 큰따옴표(" ")로 감싸진 자료형을 의미합니다.

문제 정의

먼저 예시를 통해 문제를 살펴보겠습니다.

입력값:

입력 문자열: Java Programming is fun
찾을 문자: a

기대 출력값:

a의 빈도수는 3입니다.

"Java Programming is fun"이라는 문자열에는 소문자 'a'가 총 3번 등장하므로 결과값은 3이 됩니다.

알고리즘

해결 과정은 다음과 같습니다.

Step 1 - 시작
Step 2 - 문자열(input_string), 문자(input_character), 카운터(counter) 변수를 선언한다.
Step 3 - 각 변수에 값을 할당한다.
Step 4 - for 반복문으로 문자열을 순회하며 각 문자와 찾으려는 문자를 비교한다. 일치할 경우 카운터 값을 증가시킨다.
Step 5 - 결과를 출력한다.
Step 6 - 종료

방법 1: main 함수에서 직접 처리

첫 번째 방법은 모든 연산을 main 함수 안에서 한 번에 수행하는 방식입니다.

public class Demo {
    public static void main(String[] args) {
        String input_string = "Java Programming is fun";
        System.out.println("The string is defined as: " +input_string);
        char input_character = 'a';
        System.out.println("The character is defined as: " +input_character);
        int counter = 0;
        for(int i = 0; i < input_string.length(); i++) {
            if(input_character == input_string.charAt(i)) {
                ++counter;
            }
        }
        System.out.println("The frequency of " + input_character + " is " + counter );
    }
}

출력 결과

The string is defined as: Java Programming is fun
The character is defined as: a
The frequency of a is 3

방법 2: 객체 지향 방식으로 함수 분리

두 번째 방법은 빈도수 계산 로직을 별도의 함수로 분리하여 객체 지향 프로그래밍(OOP) 원칙에 맞게 코드를 구성한 것입니다. 이렇게 하면 코드의 재사용성과 유지보수성이 향상됩니다.

public class Demo {
    public static int get_count(String input_string,char input_character) {
        int counter = 0;
        for (int i = 0; i < input_string.length(); i++) {
            if (input_character == input_string.charAt(i)) {
                ++counter;
            }
        }
        return counter;
    }
    public static void main(String[] args) {
        String input_string = "Java Programming is fun";
        System.out.println("The string is defined as: " +input_string);
        char input_character = 'a';
        System.out.println("The character is defined as: " +input_character);
        int counter = get_count(input_string, input_character);
        System.out.println("The frequency of " + input_character + " is " + counter );
    }
}

출력 결과

The string is defined as: Java Programming is fun
The character is defined as: a
The frequency of a is 3

코드 핵심 포인트

  • charAt() 메서드: 문자열에서 특정 인덱스 위치의 문자를 반환합니다.
  • length() 메서드: 문자열의 전체 길이를 반환하여 반복 범위를 결정합니다.
  • 시간 복잡도: 두 방법 모두 문자열을 한 번만 순회하므로 O(n)의 시간 복잡도를 가집니다.

두 방법 모두 동일한 결과를 출력하지만, 규모가 큰 프로젝트에서는 로직을 함수로 분리하는 두 번째 방식이 더 바람직합니다.