문제
- 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
- 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.
- 단 회문을 검사할 때 대소문자를 구분하지 않습니다.
입력
- 단 회문을 검사할 때 대소문자를 구분하지 않습니다.
출력
- 첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.
입출력 예제
다음과 같이 두 가지 방식으로 풀어보았다.
1. toUpperCase 를 사용한다.
2. reverse, equalsIgnoreCase 를 사용한다.
1. toUpperCase 사용
문자열을 입력받고 메소드를 수행하는 코드를 main 에 작성한다.
이제 메소드를 구현해보자.
리턴값의 디폴트를 YES로 설정한다.
그리고 toUpperCase() 를 사용해서 대소문자 구분을 없애기 위해 모든 문자열을 대문자로 바꿔준다.
다음으로 for문을 돌리는데, 0부터 (문자열 길이/2) 만큼 돌려준다.
- 양 끝의 문자를 비교한다. 즉, 2개의 문자를 한번에 비교하는 것이기 때문에 2로 나눠준다.
if문을 통해 양 끝의 문자가 동일한지 확인하고, 동일하지 않으면 NO를 리턴해준다.
수행 결과를 확인한다.
2. reverse, equalsIgnoreCase 사용
두번째 풀이방식은 reverse, equalsIgnoreCase를 사용하는 방식이다.
- reverse() : 문자를 뒤집어주는 메소드이며 String 클래스에 없고 StringBuilder 클래스에 내장되어 있다.
- equalsIgnoreCase() : 대소문자를 구분하지 않고 문자열 자체로만 비교한다.
- equals : 대소문자 구분을 하고 비교한다.
리턴값의 디폴트를 NO로 설정한다.
그리고 reverse() 를 사용해서 입력받은 문자를 뒤집어준다.
이 때, reverse()는 StringBuilder 형태이므로 toString()을 통해 String로 변형해주어야 한다.
if문에서 equalsIgnoreCase() 를 사용하여 대소문자 구분 없이 문자가 동일한지를 확인한다.
동일하면 true를 리턴하기에 해당 조건에 맞게 작성한다.
수행 결과를 확인한다.
해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.
'알고리즘 > 인프런' 카테고리의 다른 글
섹션 1. String(문자열)_9. 숫자만 추출 (0) | 2022.08.21 |
---|---|
섹션 1. String(문자열)_8. 유효한 펠린드롬 (0) | 2022.08.21 |
섹션 1. String(문자열)_6. 중복문자제거 (0) | 2022.08.19 |
섹션 1. String(문자열)_5. 특정 문자 뒤집기 (0) | 2022.08.18 |
섹션 1. String(문자열)_4. 단어 뒤집기 (0) | 2022.08.18 |