Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 31
관리 메뉴

으하하 공부일기

[SWEA] - 1989. 초심자의 회문 검사 (D2) 본문

SWEA/D2

[SWEA] - 1989. 초심자의 회문 검사 (D2)

0으하하0 2022. 4. 22. 18:47

[문제]

"level" 과 같이 거꾸로 읽어도 제대로 읽은 것과 같은 문장이나 낱말을 회문(回文, palindrome)이라 한다.
단어를 입력 받아 회문이면 1을 출력하고, 아니라면 0을 출력하는 프로그램을 작성하라.

[제약 사항]
각 단어의 길이는 3 이상 10 이하이다.

[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에 하나의 단어가 주어진다.

[출력]
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

문제 풀기

1989. 초심자의 회문 검사

 


[풀이]

  • arr1 배열에는 입력받은 문자열을 단어 하나하나 분리하여 담아준다.
  • arr2 배열에는 arr1 배열을 거꾸로 담아서 두 배열을 비교한다.
import java.util.Arrays;
import java.util.Scanner;

class Solution {
	public static void main(String[] args) throws Exception {		
		Scanner sc = new Scanner(System.in);
		
		int t = sc.nextInt();
		
		for(int tc=1; tc<=t; tc++) {
			String s = sc.next();
			
			boolean check = true;
			
			char arr1[] = new char[s.length()];
			char arr2[] = new char[s.length()];
			
			for(int i=0; i<s.length(); i++) {
				arr1[i] = (char)s.charAt(i);
				arr2[s.length()-1-i] = arr1[i];
			}
			check = Arrays.equals(arr1, arr2);
			
			if(check) System.out.format("#%d %d\n", tc, 1);
			else System.out.format("#%d %d\n", tc, 0);
		}
	}
}