반응형
아래는 문자열의 각 문자의 빈도를 세는 Java 프로그램과 함께 쉽게 이해할 수 있도록 자세히 설명한 내용입니다.
프로그램의 목적
이 프로그램은 문자열에서 각 문자가 몇 번 나타나는지를 계산합니다. 예를 들어, 문자열이 "hello"라면:
- h는 1번,
- e는 1번,
- l은 2번,
- o는 1번 나타납니다.
프로그램 코드
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class CharacterFrequency {
public static void main(String[] args) {
// 1. 사용자로부터 문자열 입력받기
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요: ");
String input = scanner.nextLine();
// 2. 빈도수를 저장할 Map 생성
Map<Character, Integer> frequencyMap = new HashMap<>();
// 3. 문자열의 각 문자 순회
for (char c : input.toCharArray()) {
// Map에 문자가 이미 있다면 값 증가, 없다면 초기값 1로 설정
frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1);
}
// 4. 결과 출력
System.out.println("문자의 빈도수:");
for (Map.Entry<Character, Integer> entry : frequencyMap.entrySet()) {
System.out.println("'" + entry.getKey() + "' : " + entry.getValue() + "번");
}
}
}
단계별 설명
1. 사용자 입력받기
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요: ");
String input = scanner.nextLine();
- Scanner 클래스를 사용해 사용자가 문자열을 입력하도록 합니다.
- scanner.nextLine()을 통해 사용자가 입력한 문자열을 변수 input에 저장합니다.
2. 문자의 빈도수를 저장할 공간 만들기
Map<Character, Integer> frequencyMap = new HashMap<>();
- Map은 키-값 쌍을 저장할 수 있는 데이터 구조입니다.
- 여기서 문자(character)는 키, **문자가 나타난 횟수(정수)**는 값으로 저장됩니다.
- HashMap은 키-값 쌍을 저장하고 빠르게 검색할 수 있는 자료구조입니다.
3. 문자열을 하나씩 순회하기
for (char c : input.toCharArray()) {
frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1);
}
- input.toCharArray()는 문자열을 문자 배열로 변환합니다. 예: "hello" → ['h', 'e', 'l', 'l', 'o']
- for문은 이 배열의 각 문자를 하나씩 가져옵니다.
- frequencyMap.getOrDefault(c, 0)는 c가 이미 Map에 있으면 그 값을 가져오고, 없으면 기본값 0을 가져옵니다.
- + 1을 더해 문자의 개수를 증가시키고, 그 결과를 다시 Map에 저장합니다.
4. 결과 출력
for (Map.Entry<Character, Integer> entry : frequencyMap.entrySet()) {
System.out.println("'" + entry.getKey() + "' : " + entry.getValue() + "번");
}
- frequencyMap.entrySet()은 Map의 모든 키와 값을 가져옵니다.
- 각 키(문자)와 값(빈도수)을 순서대로 출력합니다.
예제 실행
입력
문자열을 입력하세요: hello
출력
문자의 빈도수:
'h' : 1번
'e' : 1번
'l' : 2번
'o' : 1번
추가 팁
- Map의 역할 이해하기
- Map은 데이터를 정리된 형태로 저장합니다. 여기서는 문자를 키로 사용하고, 해당 문자의 빈도를 값으로 저장합니다.
- getOrDefault 이해하기
- getOrDefault(key, defaultValue)는 key가 존재하면 값을 반환하고, 없으면 기본값 defaultValue를 반환합니다. 이 방법으로 코드를 간결하게 작성할 수 있습니다.
- 배열 변환
- toCharArray()는 문자열을 문자로 쪼개는 데 사용됩니다. 이 방법으로 문자열의 각 문자를 처리할 수 있습니다.
- 출력 형식 커스터마이징
- 출력 부분에서 필요에 따라 "빈도수" 대신 "횟수" 등 다른 표현을 사용할 수 있습니다.
이 프로그램은 입력한 문자열에서 문자의 빈도를 분석하고 결과를 명확하게 출력하는 좋은 기초 연습 예제입니다.
반응형
'자바(Java)' 카테고리의 다른 글
문자열이 영숫자인지 확인하는 Java 프로그램 쉽게 이해하기 (0) | 2024.11.26 |
---|---|
Java로 문자열을 연결하는 프로그램 쉽게 이해하기 (1) | 2024.11.24 |
"자바로 문자열 팰린드롬 프로그램 작성"에 대해 쉽게 이해하기 (1) | 2024.11.22 |
Java Swing을 사용하여 계산기를 만드는 프로그램 쉽게 이해하기 (0) | 2024.11.20 |
AWT를 사용하여 간단한 계산기를 만드는 Java 프로그램 쉽게 이해하기 (0) | 2024.11.19 |