티스토리 뷰

회문이란?

똑바로 읽으나 거꾸로 읽으나 똑같은 글귀인 것.

 

문제

입력된 문자가 회문이면 "YES", 회문이 아니면 "NO"를 출력하세요.

단, 대소문자를 구분하지 않는다.

 

풀이 1

  1. 글자를 뒤집기 위해 text의 글자크기 -1을 하여 마지막 글자 위치(cnt)를 알아낸다.
  2. text를 substring(시작, 끝)을 이용하여 한글자씩 잘라낸다.
  3. 새로운 String값을 만든 후 한 글자씩 넣는다.
package algorithm;

import java.util.Scanner;

public class seven_Circular {
	public String solution(String text){
    	String answer = "NO";
	    String circular = "";
	    int cnt = text.length()-1;
	    for(int i = 0; i < text.length(); i++)
	    {
	    	if(i == 0) {
	    		circular += text.substring(cnt, cnt+1);
	    	}else {
	    		circular += text.substring(cnt-i, cnt-i+1);
	    	}
	    }

	    if(circular.equalsIgnoreCase(text)) //대소문자를 구분하지 않고 같으지 비교
	    {
	    	answer = "YES";
	    }
		
		return answer;
	  }
	  
	  public static void main(String[] args){
		seven_Circular T = new seven_Circular();
	    Scanner kb = new Scanner(System.in); //입력된 값
	    String str = kb.next();
	    System.out.println(T.solution(str));
	  }
}

풀이2

StringBuilder(텍스트).reverse().toString()을 하면 글자가 뒤집어 진다.

인프런 - 자바(Java) 알고리즘 문제풀이 입문:코딩테스트 대비의 풀이
인프런 강의 : https://inf.run/TPgh
import java.util.Scanner;

public class seven_Circular_class2 {
	/* 회문 : 문자를 뒤집어도 같은 문자일 경우
	 * 회문은 짝수 문자든 홀수 문자든 문자열.len/2하면 된다.
	 * 홀수는 가운데 글자는 비교 할 대상이 없기 때문에 /2로 작업해도 상관 없다.
	 *  */
	public String solution(String text){
		String answer = "NO";
		text = text.toUpperCase();
	    String tmp = new StringBuilder(text).reverse().toString();
		if(tmp.equals(text)) return "YES"; //equals:대상의 내용을 비교(주소값 비교가 아님)
		return answer;
	  }
	  
	  public static void main(String[] args){
		seven_Circular T = new seven_Circular();
	    Scanner kb = new Scanner(System.in);
	    String str = kb.next();
	    System.out.println(T.solution(str));
	  }
}

 

댓글