문제
- 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.
- 문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.
- 단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.
- 알파벳 이외의 문자들의 무시합니다.
입력
- 알파벳 이외의 문자들의 무시합니다.
출력
- 첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.
입출력 예제
풀이 방식은 다음과 같다.
문자열로 입력받을 것이기에 nextLine() 을 사용하여 변수를 선언하고, 메소드를 호출한다.
바로 메소드 구현으로 넘어가보자.
디폴트 결과값을 NO로 설정한다.
toUppcerCase() 를 통해 입력받은 문자열을 모두 대문자로 바꾼다.
다음으로 replaceAll()에 정규식 [^A-Z]를 사용해서 영어 대문자 알파벳을 제외한 모든 문자를 "" 로 변경한다.
- replaceAll("[정규식]", "") : 정규식에 해당하는 문자들을 "" 로 변경한다.
- replaceAll("[^정규식]", "") : 정규식에 해당하는 문자들을 제외한 나머지를 "" 로 변경한다.
- replace("ABCD", "") : ABCD 문자를 "" 로 변경한다. 단, 정규식 사용이 불가능하다.
이해를 좀 더 쉽게 하기 위해 해당 부분에 대한 결과를 콘솔로 찍어보았다.
- 입력값 : found7, time: study; Yduts; emit, 7Dnuof
- 결과값 : FOUNDTIMESTUDYYDUTSEMITDNUOF
이제 reverse() 를 사용해서 문자열을 뒤집어준다.
마지막으로 정규식을 통해 변경한 문자열과 reverse()를 통해 뒤바꾼 문자열이 동일한지를 비교하여 동일하면 YES를 리턴한다.
수행 결과를 확인한다.
해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.
'알고리즘 > 인프런' 카테고리의 다른 글
섹션 1. String(문자열)_10. 가장 짧은 문자거리 (2) | 2022.08.22 |
---|---|
섹션 1. String(문자열)_9. 숫자만 추출 (0) | 2022.08.21 |
섹션 1. String(문자열)_7. 회문 문자열 (0) | 2022.08.19 |
섹션 1. String(문자열)_6. 중복문자제거 (0) | 2022.08.19 |
섹션 1. String(문자열)_5. 특정 문자 뒤집기 (0) | 2022.08.18 |