티스토리 뷰

반응형

 

문제

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.

문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.

단 회문을 검사할 때 대소문자를 구분하지 않습니다.

 

입력

첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.

 

출력

첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.

 

 

 

예시 입력

gooG

예시 출력

YES

 

 

 

 

 

문제 풀이

 

[첫번째 풀이]

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String input = scanner.next().toLowerCase();

    StringBuffer buffer = new StringBuffer(input);

    if (input.equals(buffer.reverse().toString())) {
      System.out.println("YES");
    } else {
      System.out.println("NO");
    }
  }
}

(Time 165ms / Memory 27MB)

import java.util.Scanner;
  
public class Main {
  public String Solution(String str) {
    StringBuffer buffer = new StringBuffer(str);

    if (str.equals(buffer.reverse().toString())) {
      return "YES";
    }
    return "NO";
  }
  
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String input = scanner.next().toLowerCase();

    Main main = new Main();
    System.out.println(main.Solution(input));
  }
}

(Time 152ms / Memory 27MB)

 

[두번째 풀이]

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String input = scanner.next().toLowerCase();

    boolean check = true;
    for (int i=0; i<input.length()/2; i++) {
      if (input.charAt(i) != input.charAt(input.length() - 1 - i)) {
        System.out.println("NO");
        check = false;
        break;
      }
    }

    if (check) {
      System.out.println("YES");
    }
  }
}

(Time 150ms / Memory 27MB)

import java.util.Scanner;
  
public class Main {
  public String Solution(String str) {
    for (int i=0; i<str.length()/2; i++) {
        if (str.charAt(i) != str.charAt(str.length() - 1 - i)) {
            return "NO";
        }
    }

    return "YES";
  }
  
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String input = scanner.next().toLowerCase();

    Main main = new Main();
    System.out.println(main.Solution(input));
  }
}

(Time 157ms / Memory 27MB)

 

 

 

- 첫번째 풀이는 입력 받은 값을 소문자로 통일시켜서 StringBuffer를 이용해 reverse 하여 비교 후 값이 같으면 YES, 다르면 NO

- 두번째 풀이는 for 문을 이용해 앞/뒤 동일한 위치값이 같으면 YES, 다르면 NO

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함