ABOUT ME

-

오늘 방문자
-
어제 방문자
-
전체
-
  • [hackerRank] StringReverse
    알고리즘 2020. 10. 6. 23:40

    문제 

    www.hackerrank.com/challenges/java-string-reverse/

     

    접근방법

    쉽게 생각하면, 아주 쉽게 풀수 있는 문제였음, (2가지 방식으로 풀었다.)

    입력받은 문자열을 뒤집어서 입력한 문자열과 같은지만 체크하면 되는 문제.

    solution1의 경우 StringBuilder 클래스의 reverse()메소드를 이용하면 쉽게 뒤집을수 있다.

     

    하지만 solution1의 문제점은 최적화된 코드는 아니라는 것.

    왜냐하면, 가장 처음 문자와, 가장 끝에 있는 문자가 다르다면 굳이 전부 뒤집을 필요는 없음.

     

    그래서 solution2에서는  맨앞, 맨뒤를 각각 비교하다 중간에 다르면 바로 비교를 종료시켰다.

     

    채점 속도도 solution2가  solution1에 비해 훨씬 빨랐다.

     

     

    코드

    import java.util.Scanner;
    
    /**
     * https://www.hackerrank.com/challenges/java-string-reverse
     */
    public class StringReverse {
    
        public StringReverse() {
            //solution();
            solution2();
        }
    
        public void solution(){
            Scanner sc=new Scanner(System.in);
            String a =sc.next();
    
            StringBuilder sb = new StringBuilder(a);
            sb.reverse();
    
            System.out.println(a.equals(sb.toString())?"Yes":"No");
        }
    
        public void solution2() {
            Scanner sc = new Scanner(System.in);
            String a = sc.next();
    
            for (int startIdx = 0, endIdx = a.length()-1 ; startIdx < a.length(); startIdx++, endIdx--) {
                if (a.charAt(startIdx) != a.charAt(endIdx)) {
                    System.out.println("No");
                    break;
                }
    
                // input = "a"  startIdx == endIdx
                if(startIdx > endIdx || startIdx == endIdx){
                    System.out.println("Yes");
                    break;
                }
            }
        }
    }

    '알고리즘' 카테고리의 다른 글

    [hackerRank] JavaComparator  (0) 2021.02.25
    [hackerRank] JAVA Stack  (0) 2020.10.26
    [hackerRank] datatypes  (0) 2020.09.29
    [hackerRank] AppleAndOrange  (0) 2019.12.17
    [hackerRank] AngryProfessor  (0) 2019.12.17

    댓글

Designed by Tistory.