개발자는 기록이 답이다

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_회문 문자열) 본문

알고리즘/인프런 - Java알고리즘 입문

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(문자열_회문 문자열)

slow-walker 2023. 8. 28. 13:49

 

 

https://cote.inflearn.com/contest/10/problem/01-07

 

OnlineJudge

 

cote.inflearn.com

(위의 링크는 인프런 로그인 후, 해당 강의를 사지 않으면 접속이 되지 않습니다)

 

7. 회문 문자열

 

예시 입력 1 

gooG

예시 출력 1

YES

 

 

내가 푼 풀이 (Time: 162ms Memory: 27MB)

 해당 str을 거꾸로 순회하면서 StringBuilder에 집어넣고, 입력값과 일치하는지 확인한다.

import java.util.Scanner;

public class Main {

    public String solution(String str) {
        String upperCase = str.toUpperCase();
        StringBuilder sb = new StringBuilder();
        for (int i = upperCase.length() -1; i >= 0 ; i--) {
            sb.append(upperCase.charAt(i));
        }
        if (upperCase.equals(String.valueOf(sb)))
            return "YES";
        else
            return "NO";
    }

    public static void main(String[] args) {
        Main main = new Main();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(main.solution(str));

    }
}

 

강의 답안 1 (Time: 152ms Memory: 27MB)

1. 길이를 2로 나눈 몫의 전까지를 계산하면 된다

2. 앞에 인덱스값과 끝 인덱스 값이 같은지 비교

import java.util.Scanner;

public 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++) {
        // str.charAt(len-i-1) 이게 중요 포인트!
            if(str.charAt(i) != str.charAt(len-i-1)) return "NO";
        }
        return answer;
    }

    public static void main(String[] args) {
        Main main = new Main();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(main.solution(str));

    }
}

 

 

강의 답안 2 (Time: 168ms Memory: 27MB)

- equalsIgnoreCase()함수를 사용한다

import java.util.Scanner;

public 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 main = new Main();
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(main.solution(str));

    }
}