22.4.27 [HackerRank]Java String Reverse

서태욱·2022년 4월 27일
0

Algorithm

목록 보기
16/45
post-thumbnail

✅ 문제 분석

madam, nurses run 처럼 앞에서 읽으나 뒤에서 읽으나 똑같은 단어나 문구를 palindrome(회문)이라고 한다.

String A가 주어지면 회문일 때 Yes, 아니면 No를 프린트해주면 된다.

🌱 배경지식

1. 반복문 사용해서 문자열 뒤집기

public class StringReverse {
	public static void main(String[] args) {
		// 문자열
		String str = "ABCDE";
        
		// 문자열 reverse
		String reverse = "";
		for (int i = str.length() - 1; i >= 0; i--) {
			reverse = reverse + str.charAt(i);
		}
        
		// 결과 출력
		System.out.println(reverse); // "EDCBA"
	}
}

반복문을 사용해 원본 문자열(str)을 가장 마지막 인덱스의 글자부터 읽어서
reverse 문자열에 하나씩 이어붙인다.

2. StringBuffer / reverse() 메서드 사용하기

public class StringReverse {
	public static void main(String[] args) {
		// 문자열
		String str = "ABCDE";
        
		// 문자열 reverse
		StringBuffer sb = new StringBuffer(str);
		String reverse = sb.reverse().toString();
        
		// 결과 출력
		System.out.println(sb); // "EDCBA"
		System.out.println(reverse); // "EDCBA"
	}
}

StringBuffer sb = new StringBuffer(str)
stringBuffer 클래스는 String을 다루는 클래스다.
생성자의 파라미터로 문자열을 입력받을 수 있다.

String reverse = sb.reverse().toString();
StringBuffer 클래스의 reverse() 메서드는 자신을 호출한 객체(예제에서는 sb)의 문자열을
거꾸로 뒤집어서 db객체의 reference를 리턴한다.
이렇게 리턴된 StringBuffer 객체를 toString() 메서드를 사용해 String으로 변환해 준다.

그 결과 sb객체와 reverse() 메서드가 리턴한 reverse의 문자열도 뒤집히게 된다.

3. charAt() 메서드

기본형 변수인 char는 단 한 글자만 저장할 수 있는 반면, scanner로 입력을 받을 때는 String 타입으로밖에 받을 수 없다. 그래서 등장한 것이 charAt() 메서드다.

이 메서드를 사용하면 String으로 저장된 문자열 중에서 한 글자만 선택해 char타입으로 변환해 준다.

✏️ 해설

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        String A=sc.next();
        /* Enter your code here. Print output to STDOUT. */
        StringBuffer sb = new StringBuffer(A);
        
        if  (A.equals(sb.reverse().toString())) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
        
    }
}

👉 참고

profile
re:START

0개의 댓글