[SWEA] 23005번 회문 만들기

yseo14·2025년 4월 25일

코딩테스트 대비

목록 보기
75/88

문제 링크

풀이

투포인터를 사용해서 문자열 양 끝을 비교한다.

  • 양쪽의 문자가 같으면 두 포인터를 모두 안쪽으로 이동한다.
  • 한쪽이 'x'이고 다른 쪽이 다른 문자라면 'x'가 아닌 쪽에 'x'를 추가한다. 즉, 'x'인 쪽만 포인터를 안쪽으로 이동시킨다.
  • 양쪽 모두 'x'가 아니고, 서로 다른 문자라면 회문으로 만들 수 없으므로 count를 -1로 하고 반복문을 종료한다.

코드


import java.util.*;
import java.io.*;
 
class Solution {
    public static void main(String args[]) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T;
        T = Integer.parseInt(br.readLine());
 
        for(int test_case = 1; test_case <= T; test_case++) {
            String str = br.readLine();
            int length = str.length();
            int left = 0;
            int right = length - 1;
            int count = 0;
            while(left < right) {
                char leftC = str.charAt(left);
                char rightC = str.charAt(right);
                if(leftC == rightC){
                    left +=1;
                    right -=1;
                } else if (leftC == 'x') {
                    left += 1;
                    count += 1;
                } else if( rightC == 'x') {
                    right -= 1;
                    count += 1;
                } else {
                    count = -1;
                    break;
                }
            }
            System.out.println(count);
        }
    }
}
profile
like the water flowing

0개의 댓글