본문 바로가기
알고리즘 문제풀이

[알고리즘/인프런]1-7 회문문자열(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의)

by jeonghaemin 2021. 5. 5.
728x90

인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.

내 풀이(while문)

  • 대소문자를 구분하지 않기때문에 문자를 모두 대문자로 변환 후 while문을 사용하여 대칭되는 위치의 문자 비교
import java.io.*;

public class Main {

    public boolean solution(String s) {
        int left = 0;
        int right = s.length() - 1;
        char[] chars = s.toUpperCase().toCharArray();

        while (left < right) {
            if (chars[left] != chars[right]) {
                return false;
            }

            left++; right--;
        }

        return true;
    }

    public static void main(String[] args) throws IOException {
        Main T = new Main();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String s = br.readLine();

        if (T.solution(s)) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }
    }
}

강의 풀이1(for문)

  • 대소문자를 구분하지 않기 때문에 문자를 모두 대문자로 변환 후 for문을 사용하여 대칭되는 위치의 문자 비교
import java.util.*;
class Main {    
    public String solution(String str){
        String answer="YES";
        str=str.toUpperCase();
        int len=str.length();
        for(int i=0; i<len/2; i++){
            if(str.charAt(i)!=str.charAt(len-i-1)) answer="NO";
        }
        return answer;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        String str=kb.next();
        System.out.print(T.solution(str));
    }
}

강의 풀이2(StringBuilder.reverse())

  • StringBuilder의 reverse() 메서드를 사용하여 문자열을 뒤집은 후
  • equalsIgnoreCase() 메서드를 사용하여 원래 문자열과 대소문자를 구분하지 않고 같은지 비교
import java.util.*;
class Main {    
    public String solution(String str){
        String answer="NO";
        String tmp=new StringBuilder(str).reverse().toString();
        if(str.equalsIgnoreCase(tmp)) answer="YES";
        return answer;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        String str=kb.next();
        System.out.print(T.solution(str));
    }
}

댓글