회문 문자열
앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 한다.
문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 "NO"를 출력하는 프로그램을 작성
■ 문제 풀이
1) 입력 설명
- 회문을 검사할 때, 대소문자를 구분하지 않는다.
- 첫 줄에 길이가 100을 넘지 않는 공백이 없는 문자열이 주어진다.
2) 출력 설명
- 첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력한다.
3) 테스트
- input : gooG
- output : YES
4) 문제 풀이
- 첫번째 solution에서는 input으로 들어온 문자열을 배열로 생성 후, 반복문을 통해 순차적으로 거꾸로 읽으며 tmp 배열을 생성하여
두개의 배열을 비교하여 같은 배열인지를 비교
- 두번째 solution은 input으로 들어온 문자열의 길이를 통해 검사 범위를 설정한 뒤, 맨 앞쪽의 문자와 맨 뒤쪽의 값을 하나씩 비교해가며 비교를 통해 회문 문자열인지를 체크
-팰린드롬
import java.util.Arrays;
import java.util.Scanner;
// 첫 번째 풀이
public class Main {
private String solution(String input) {
String answer = "NO";
char[] chars = input.toLowerCase().toCharArray();
char[] tmp = new char[chars.length];
int length = chars.length;
int index=0;
for (int i = length - 1; i >= 0; i--) {
tmp[index] = chars[i];
index++;
}
if (Arrays.equals(chars, tmp)) {
answer = "YES";
}
return answer;
}
public static void main(String[] args) {
Main main = new Main();
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
System.out.println(main.solution(input));
return;
}
}
import java.util.Scanner;
// 두번째 풀이
public class Main {
private String solution(String input) {
String answer = "YES";
input = input.toLowerCase(); //회문 검사 시, 대소문자를 구분하지 X
int length = input.length();
for (int i = 0; i < length / 2; i++) {
if (input.charAt(i) != input.charAt(length - i - 1)) {
return "NO";
}
}
return answer;
}
public static void main(String[] args) {
Main main = new Main();
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
System.out.println(main.solution(input));
return;
}
}
'CodingTest Practice' 카테고리의 다른 글
[인프런] 숫자만 추출 (0) | 2022.04.03 |
---|---|
[인프런] 유효한 팰린드롬 (0) | 2022.04.03 |
[인프런] 중복문자제거 (0) | 2022.04.02 |
[인프런] 특정 문자 뒤집기 (0) | 2022.03.31 |
[인프런] 단어 뒤집기 (0) | 2022.03.30 |