[코딩 테스트 RUN] SWEA 수업 : 1989. 초심자의 회문 검사

코테런/SWEA(알고리즘 수업)
2026.03.03

 

⚠️ 주의!
SWEA에서 낸 코딩 문제에 대한 해답이 들어있습니다.
열람 시 주의해주세요.

 

이후에 안 것인데 투포인트로 푼 방법이었다고 한다.

전혀 몰랐다. 공식을 보지 않고 풀어서 대단하다고 해야할지 모르겠다.

 

[SW Expert Academy] 1989. 초심자의 회문 검사

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

간단하게 생각하자. 회문이라는 건 결국 거울처럼 동일한 문자가 있어야 한다. 즉, 시작점에 있는 것부터 서서히 세어가는 문자와 끝점에서부터 서서히 세어가는 문자가 동일해야 한다. 따라서 i를 기점으로 삼으면 +i와 -i가 되어야한다. String의 끝점은 length()이고, 0부터 시작하면 - 1해야한다. 그런 형태로 서서히 줄여나가면서, 한번이라도 틀리면 0처리하고 break하면 된다.

 

여기서 length()를 반으로 한건 나중에 안 최적화로, 회문 특성 상 반절만 검사하면 된다.

 

정답

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        for(int test_case = 1; test_case <= T; test_case++){

            String str = br.readLine();
            int palindrome = 1;
            
            for (int i = 0; i < str.length() / 2; i++) {
                if(str.charAt(i) != str.charAt(str.length() - 1 - i)){
                    palindrome = 0;
                    break;
                }
            }

            System.out.printf("#%d %d%n", test_case, palindrome);

        }

    }
}