반응형
문자열 팰린드롬 프로그램이란?
"팰린드롬(Palindrome)"은 앞에서 읽으나 뒤에서 읽으나 똑같은 문자열을 뜻합니다.
- "level" → 앞으로 읽어도 "level", 뒤로 읽어
- "racecar" → 앞으로 읽어도 "racecar", 뒤로 읽어도 "racecar"
이런 문자열을 팰린드롬이라고 합니다. 반대로, "hello"는 팰린드롬이 아닙니다. 앞으로 읽으면 "hello"지만, 뒤로 읽으면 "olleh"가 되기 때문이죠.
이번에는 Java를 사용해 문자열이 팰린드롬인지 아닌지를 판단하는 프로그램을 만들어 보겠습니다.
프로그램의 흐름
- 사용자 입력 받기: 팰린드롬인지 확인할 문자열을 사용자가 입력합니다.
- 문자열을 뒤집기: 원래 문자열의 순서를 반대로 뒤집은 문자열을 생성합니다.
- 비교하기: 원래 문자열과 뒤집힌 문자열이 같은지 비교합니다.
- 결과 출력: 같으면 "팰린드롬입니다"라고 출력하고, 다르면 "팰린드롬이 아닙니다"라고 출력합니다.
예제 코드
아래는 이해하기 쉽게 작성된 Java 코드입니다:
import java.util.Scanner; // 사용자 입력을 받기 위한 Scanner 클래스 임포트
public class PalindromeChecker {
public static void main(String[] args) {
// 1. 사용자로부터 문자열 입력받기
Scanner scanner = new Scanner(System.in); // Scanner 객체 생성
System.out.print("문자열을 입력하세요: ");
String input = scanner.nextLine(); // 사용자 입력을 받아 input에 저장
// 2. 입력받은 문자열 뒤집기
String reversed = ""; // 뒤집힌 문자열을 저장할 변수
for (int i = input.length() - 1; i >= 0; i--) {
reversed += input.charAt(i); // 문자열을 뒤에서부터 하나씩 추가
}
// 3. 원래 문자열과 뒤집힌 문자열 비교
if (input.equals(reversed)) {
System.out.println("입력한 문자열은 팰린드롬입니다!");
} else {
System.out.println("입력한 문자열은 팰린드롬이 아닙니다.");
}
scanner.close(); // Scanner 자원 닫기
}
}
코드 설명 (한 줄 한 줄 자세히)
1. 사용자 입력 받기
Scanner scanner = new Scanner(System.in); // Scanner 객체 생성
System.out.print("문자열을 입력하세요: "); // 사용자에게 입력을 요청하는 메시지 출력
String input = scanner.nextLine(); // 사용자가 입력한 문자열을 input 변수에 저장
- Scanner 클래스: 키보드 입력을 읽는 도구입니다.
- nextLine() 메서드: 사용자가 입력한 한 줄의 문자열을 가져옵니다.
- 입력 예: 사용자가 "racecar"를 입력하면, input 변수에 "racecar"가 저장됩니다.
2. 문자열 뒤집기
String reversed = ""; // 뒤집힌 문자열을 저장할 변수
for (int i = input.length() - 1; i >= 0; i--) { // 문자열을 뒤에서부터 반복
reversed += input.charAt(i); // 현재 문자를 reversed에 추가
}
- input.length(): 문자열의 길이를 반환합니다. 예를 들어, "racecar"의 길이는 7입니다.
- input.charAt(i): 문자열의 i번째 문자를 가져옵니다. 예를 들어, input.charAt(0)은 첫 번째 문자입니다.
- 이 반복문은 문자열의 끝에서부터 시작해 첫 번째 문자까지 거꾸로 읽으며 reversed에 저장합니다.
- 예: "racecar" → "racecar" (뒤집어도 같음)
3. 문자열 비교
if (input.equals(reversed)) { // 원래 문자열과 뒤집힌 문자열이 같은지 확인
System.out.println("입력한 문자열은 팰린드롬입니다!");
} else {
System.out.println("입력한 문자열은 팰린드롬이 아닙니다.");
}
- equals() 메서드: 두 문자열이 정확히 같은지를 확인합니다.
- 만약 원래 문자열과 뒤집힌 문자열이 같으면 팰린드롬입니다.
실행 예시
실행 화면 1: 팰린드롬인 경우
문자열을 입력하세요: level
입력한 문자열은 팰린드롬입니다!
실행 화면 2: 팰린드롬이 아닌 경우
문자열을 입력하세요: hello
입력한 문자열은 팰린드롬이 아닙니다.
추가 팁: 공백, 대소문자 처리하기
현재 프로그램은 공백이나 대소문자를 구분합니다. "Racecar"는 대소문자가 다르기 때문에 팰린드롬으로 인식되지 않습니다. 이를 개선하려면 아래와 같이 코드를 수정할 수 있습니다:
input = input.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
- replaceAll() 메서드: 문자열에서 공백이나 특수 문자를 제거합니다.
- toLowerCase() 메서드: 문자열을 모두 소문자로 변환합니다.
개선된 코드
import java.util.Scanner;
public class PalindromeChecker {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요: ");
String input = scanner.nextLine();
// 공백과 특수문자 제거, 소문자로 변환
input = input.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
String reversed = "";
for (int i = input.length() - 1; i >= 0; i--) {
reversed += input.charAt(i);
}
if (input.equals(reversed)) {
System.out.println("입력한 문자열은 팰린드롬입니다!");
} else {
System.out.println("입력한 문자열은 팰린드롬이 아닙니다.");
}
scanner.close();
}
}
이제 팰린드롬 프로그램을 만들고 실행해 보세요! 작은 프로젝트를 통해 Java의 기본 문법과 문자열 처리 방법을 익힐 수 있을 것입니다. 😊
반응형
'자바(Java)' 카테고리의 다른 글
Java로 문자열을 연결하는 프로그램 쉽게 이해하기 (1) | 2024.11.24 |
---|---|
문자열의 각 문자 빈도를 세는 Java 프로그램 쉽게 이해하기 (0) | 2024.11.23 |
Java Swing을 사용하여 계산기를 만드는 프로그램 쉽게 이해하기 (0) | 2024.11.20 |
AWT를 사용하여 간단한 계산기를 만드는 Java 프로그램 쉽게 이해하기 (0) | 2024.11.19 |
조화급수 1 + 1/2 + 1/3 + 1/4 + 1/5 +……+ 1/n의 합을 구하는 자바 프로그램 쉽게 이해하기 (0) | 2024.11.18 |