[Silver I] ์ข ์ด ์ ๊ธฐ - 1802
์ฑ๋ฅ ์์ฝ
๋ฉ๋ชจ๋ฆฌ: 18576 KB, ์๊ฐ: 248 ms
๋ถ๋ฅ
์ ๋ ํน, ๋ถํ ์ ๋ณต
๋ฌธ์ ์ค๋ช
๋ํธ๋ ์ข ์ด๋ฅผ ์ ๋๋ฐ ์์์ ๋ณด๊ณ ์ ์ผ๋ ค๊ณ ํ๋ค. ์์์ ๋ณธ๋ค๋ ๋ง์ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ณธ๋ค๋ ๋ป์ด๋ค. ๋ํธ๋ ์ข ์ด๋ฅผ ๋ฐ์ผ๋ก ์ ์ ๋, ์๋์ ๊ฐ์ด ๋๊ฐ์ง์ค ํ๋๋ก๋ง ์ ์ ์ ์๋ค.
- ์ค๋ฅธ์ชฝ ๋ฐ์ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ์ ์ด์ ์ผ์ชฝ ๋ฐ์ ์๋ก ์ ๋๋ค.
- ์ค๋ฅธ์ชฝ ๋ฐ์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ์ ์ด์ ์ผ์ชฝ ๋ฐ์ ์๋๋ก ์ ๋๋ค.
์๋์ ๊ทธ๋ฆผ์ ์์ ์ค๋ช ์ ๊ทธ๋ฆผ์ผ๋ก ์ฎ๊ธด ๊ฒ์ด๋ค.
ํ ๋ฒ์ ์ข ์ด ์ ๊ธฐ๊ฐ ๋๋ฌ์ ๋, ๋ํธ๋ ์ข ์ด ์ ๊ธฐ๋ฅผ ์ํ๋ ๋งํผ ๋ ํ ์ ์๋ค. ์ข ์ด ์ ๊ธฐ๋ฅผ ํ๋ฒ ์ ์ ๋ ๋ง๋ค ๋๊ป๋ 2๋ฐฐ๊ฐ ๋๊ณ ๊ธธ์ด๋ ์ ๋ฐ์ด ๋ ๊ฒ์ด๋ค.
์ข ์ด ์ ๊ธฐ๋ฅผ ์ฌ๋ฌ ๋ฒ ํ์ ๋ (์์ ์ ์๋ ์๋ค), ๋ํธ๋ ์ข ์ด๋ฅผ ๋ค์ ํผ๊ธฐ๋ก ํ๋ค. ๊ทธ๋ฌ๊ณ ๋์ ๋ค์ ์ ๊ณ ์ด๋ ๊ฒ ๋๊ณ ์์๋ค. ์์์ ๋ณด๊ณ ์๋ ์๋ฃก์ด๋ ๋ํธ๋ฅผ ์ํด ์ข ์ด๋ฅผ ์ ์ด์ ์ฃผ๊ธฐ๋ก ํ๋ค.(์๋ฃก์ด๋ ๋ํธ์ ๊ท์น๋๋ก ์ ์ง ์๋๋ค.) ๋ํธ๋ ๊ทธ๋ฆฌ๊ณ ๋์ ์๋ฃก์ด๊ฐ ์ ์๋ค ํ ์ข ์ด๋ฅผ ๋ค์ ๋ํธ์ ๊ท์น๋๋ก ์ ์ ์ ์๋์ง ๊ถ๊ธํด์ก๋ค.
์์ ์ ์ข ์ด๋ฅผ ์ ์๋ค ํผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ทธ๋ฆผ์ฒ๋ผ ํด์ง๋ค.
์ข ์ด๊ฐ ์๊ณ๋ฐฉํฅ์ผ๋ก ๊บฝ์ฌ์์ผ๋ฉด OUT์ด๊ณ , ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๊บพ์ฌ์์ผ๋ฉด IN์ด๋ค.
์ข ์ด๊ฐ ์ ํ์๋ ์ ๋ณด๊ฐ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ๊น์ง ์ฐจ๋ก๋๋ก ์ฃผ์ด์ก์ ๋, ์ด ์ข ์ด๋ฅผ ๋ํธ์ ๊ท์น๋๋ก ์ ์ ์ ์๋์ง ์๋์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. T๋ 1000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ T๊ฐ์ ์ค์ ๊ฐ๊ฐ์ ์ข ์ด๊ฐ ์ด๋ป๊ฒ ์ ํ์๋์ง๊ฐ ์ฃผ์ด์ง๋ค. ์ข ์ด์ ์ ๋ณด๋ ๋ฌธ์์ด๋ก ์ฃผ์ด์ง๋ฉฐ, 1์ ์์ ๊ทธ๋ฆผ์์ OUT์ ์๋ฏธํ๊ณ 0์ ์์ ๊ทธ๋ฆผ์์ IN์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ชจ์์ 100์ผ๋ก ๋ํ๋ผ ์ ์๋ค. ๋ฌธ์์ด์ ๊ธธ์ด๋ 3000๋ณด๋ค ์์ผ๋ฉฐ, ํญ์ 2N-1๊ผด์ด๋ค. (N ≥ 1)
์ถ๋ ฅ
T๊ฐ์ ์ค์ ์ฐจ๋ก๋๋ก ๊ฐ๊ฐ์ ์ข ์ด๋ฅผ ๋ํธ์ ๋ฐฉ๋ฒ๋๋ก ๋ค์ ์ ์ ์ ์์ผ๋ฉด YES๋ฅผ, ์ ์ ์ ์์ผ๋ฉด NO๋ฅผ ์ถ๋ ฅํ๋ค.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<String> result = new ArrayList<String>();
int t = sc.nextInt(); // ํ
์คํธ ์ผ์ด์ค์ ๊ฐ์
for (int i = 0; i < t; i++) {
String paper = sc.next(); // ์ข
์ด์ ์ ๋ณด
if (paper.length() == 1) { // ๊ธธ์ด๊ฐ 1์ด๋ฉด ๋ฌด์กฐ๊ฑด YES
result.add("YES");
continue;
}
int length = paper.length();
int index = length / 2;
boolean stop = false;
while (index != 0) {
for (int j = 0, k = length - 1; j < index; j++, k--) {
if (paper.charAt(j) == paper.charAt(k)) {
stop = true;
break;
}
}
if (stop) break;
length /= 2;
index /= 2;
}
if (stop) result.add("NO");
else result.add("YES");
}
for (String s : result) System.out.println(s);
}
}