본문 바로가기

알고리즘/인프런

섹션 1. String(문자열)_7. 회문 문자열

문제

  • 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.
  • 문자열이 입력되면 해당 문자열이 회문 문자열이면 "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) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.