1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [S1_17609] ํšŒ๋ฌธ

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

public class Main {
	static int N;
	static String str;
	static char[] arr;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		// **** input start ****
		N = Integer.parseInt(br.readLine());

		// **** input end ****

		for (int i = 0; i < N; i++) {
			str = br.readLine();
			arr = str.toCharArray();

			int left = 0;
			int right = str.length() - 1;

			// ํšŒ๋ฌธ์ธ ๊ฒฝ์šฐ
			if (check(left, right)) {
				sb.append("0").append("\n");
				continue;
			}
			// ์œ ์‚ฌํšŒ๋ฌธ์ธ ๊ฒฝ์šฐ
			if (check2(left, right))
				sb.append("1").append("\n");
			// ์•„๋ฌด๊ฒƒ๋„ ์•„๋‹Œ ๊ฒฝ์šฐ
			else {
				sb.append("2").append("\n");
			}
		}
		System.out.println(sb);

	} // main end

	// ํšŒ๋ฌธ์ธ์ง€ ์ฒดํฌ
	static boolean check(int left, int right) {
		while (left <= right) {
			// ๋‹ค๋ฅด๋ฉด
			if (arr[left] != arr[right])
				return false;
			left++;
			right--;
		}
		return true;
	}

	// ์œ ์‚ฌ ํšŒ๋ฌธ์ธ์ง€ ์ฒดํฌ
	static boolean check2(int left, int right) {
		while (left <= right) {
			// ๋‹ค๋ฅด๋ฉด ์™ผ์ชฝ ํ•œ์นธ ์˜ค๋ฅธ์ชฝ ํ•œ์นธ์”ฉ ์ด๋™์‹œ์ผœ ๋น„๊ตํ•ด๋ณธ๋‹ค
			if (str.charAt(left) != str.charAt(right)) {
				boolean a = check(left + 1, right);
				boolean b = check(left, right - 1);
				if (!a && !b)
					return false;
				else
					return true;
			}
			left++;
			right--;
		}
		return true;
	}
} // class end

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

๊ธฐ์กด ํŠธ๋žจํŽ„๋ฆฐ์—์„œ ํ•œ ์ธต ๋” ๋‚˜์•„๊ฐ€ ์ด์ œ ํ•˜๋‚˜๋ฅผ ๋ฐ”๊ฟ”์„œ ํšŒ๋ฌธ์ด ๋˜๋Š” ๊ฒƒ์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.
๋ฌธ์ œ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋จผ์ € String ์ž…๋ ฅ์„ ๋ฐ›์•„ ํšŒ๋ฌธ์ธ์ง€ ํ™•์ธํ•œ๋‹ค. ํšŒ๋ฌธ์ด๋ฉด โ€˜0โ€™ ์ถœ๋ ฅ ( check )
  • ํšŒ๋ฌธ์ด ์•„๋‹ˆ๋ฉด ์œ ์‚ฌํšŒ๋ฌธ์ด ๋˜๋Š”์ง€ ์œ ์‚ฌํšŒ๋ฌธ์ด ๋˜์ง€ ์•Š๋Š”์ง€ ์ฒดํฌํ•œ๋‹ค. ( check2 )
    • ๋งŒ์•ฝ ๋‹ค๋ฅด๋‹ค๋ฉด ์™ผ์ชฝ์—์„œ +1 ํ•ด์„œ ํ™•์ธ ํ•œ๋ฒˆ
    • ์˜ค๋ฅธ์ชฝ์—์„œ -1 ํ•ด์„œ ํ™•์ธ ํ•ด์„œ ๋‘˜ ๋‹ค ๊ฐ™์ง€ ์•Š์œผ๋ฉด ์œ ์‚ฌํšŒ๋ฌธ์ด ์•ˆ๋œ๋‹ค.
  • ์œ ์‚ฌํšŒ๋ฌธ์ด๋ฉด โ€˜1โ€™์„ , ์œ ์‚ฌํšŒ๋ฌธ๋„ ์•„๋‹ˆ๋ฉด โ€˜2โ€™ ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


for๋ฌธ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์™ผ์ชฝ ํ•œ์นธ ์˜ค๋ฅธ์ชฝ ํ•œ์นธ์”ฉ ์ด๋™ํ•˜๋ฉฐ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ „์ฒด ๊ณผ์ •์„ ํ™•์ธ ํ•  ๋•Œ๋„ while(left<=right) ๋ฅผ ๊นจ๋‹ฌ์•˜๋‹ค.

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: