로그인가입

토기 글귀

300점케이스 14출제 dongbinna
10월 30일에 올라온 문제입니다.

문제

한 발굴 현장에서 토기 조각이 여러 개 나왔고, 조각마다 소문자 알파벳으로 된 글귀 하나가 적혀 있다. 긴 세월을 묻혀 있었으므로 글자가 한두 개 섞여 들어간 조각도 있다.

연구자는 글귀를 세 가지로 나눈다. 글귀를 앞에서 읽은 것과 뒤에서 읽은 것이 같으면 온전한 글귀이고, 이 경우 0으로 적는다. 앞에서 읽은 것과 뒤에서 읽은 것이 다르지만 글자 하나를 지우면 앞뒤로 같아지는 글귀는 한 글자 깨진 글귀이고, 이 경우 1로 적는다. 글자를 하나 지워도 앞뒤로 같아지지 않으면 알 수 없는 글귀이고, 이 경우 2로 적는다. 지우는 글자는 글귀의 어느 자리에 있어도 되지만, 지울 수 있는 글자는 하나뿐이다.

글귀가 T개 주어졌을 때, 글귀마다 0과 1과 2 가운데 어느 것인지 차례대로 판정하는 프로그램을 작성하여라.

예를 들어 글귀 세 개가 주어졌다고 해보자. 각 글귀를 뒤에서 읽은 것과 판정 결과를 적으면 다음의 표와 같다.

글귀뒤에서 읽은 것판정답
abcbaabcba그대로 같다0
abcaacbab를 지우면 aca가 되어 앞뒤로 같다1
abcabbacba어느 글자를 지워도 앞뒤로 같아지지 않는다2

두 번째 글귀 abca를 좀 더 보자. 첫 글자와 마지막 글자는 둘 다 a라서 맞지만, 두 번째 글자 b와 끝에서 두 번째 글자 c가 다르다. 여기서 b를 지우면 aca가 되고 이것은 앞뒤로 같다. c를 지우면 aba가 되는데 이것도 앞뒤로 같다. 둘 가운데 하나만 되어도 한 글자 깨진 글귀이므로 답은 1이다.

세 번째 글귀 abcab은 첫 글자가 a이고 마지막 글자가 b라서 처음부터 어긋난다. 첫 글자 a를 지우면 bcab이 되고 뒤에서 읽으면 bacb이므로 다르다. 마지막 글자 b를 지우면 abca가 되고 뒤에서 읽으면 acba이므로 다르다. 가운데 글자를 지워도 첫 글자와 마지막 글자가 그대로 어긋나 있으므로 답은 2이다.

글자 수가 하나인 글귀는 앞에서 읽어도 뒤에서 읽어도 같으므로 답이 0이다.

입출력 예시

예시 1

입력

2
ccacbzbcabaaaabacbbcacc
abcccaacbbcaacccba

출력

1
0

예시 2

입력

1
aaacaabbaaabbaacaaa

출력

0

예시 3

입력

1
qccbyaabaccabaazbccw

출력

2

입력 조건

  • 가장 먼저 글귀의 수 T가 첫째 줄에 주어진다. T는 1 이상 30 이하의 자연수다.

  • 이어서 둘째 줄부터 T+1번째 줄까지 글귀가 한 줄에 하나씩 주어진다. 각 글귀는 소문자 알파벳으로만 이루어져 있으며, 글귀 하나의 길이는 1 이상 100,000 이하다. 글귀 안에 공백이나 대문자나 숫자는 들어 있지 않다. 한 줄에 글귀가 하나씩 오므로 입력은 모두 T+1줄이다.

출력 조건

  • 글귀마다 한 줄씩, 판정 결과를 입력에 주어진 순서대로 출력한다. 온전한 글귀는 0, 한 글자 깨진 글귀는 1, 둘 다 아닌 글귀는 2를 출력한다.

  • 한 줄에 수 하나를 출력하고 줄을 바꾼다. 앞뒤에 다른 글자나 공백은 붙이지 않으며, 마지막 줄 다음에 빈 줄을 더 붙이지도 않는다.

요구사항

  • 입력은 표준 입력으로 받고 답은 표준 출력으로 내보냅니다
  • 지울 수 있는 글자는 하나뿐입니다. 두 글자 이상을 지워야 앞뒤로 같아지는 글귀는 2입니다
  • 이미 앞뒤로 같은 글귀는 0입니다. 글자를 지우지 않아도 되는 경우에 1을 적으면 틀린 답이 됩니다
  • 글귀마다 한 줄씩, 입력에 주어진 순서대로 출력합니다
  • 글귀 하나의 길이가 100,000까지 올라가므로 지울 자리를 하나씩 모두 시험해 보는 방법으로는 시간 안에 끝나지 않습니다
  • 채점은 출력을 기대값과 글자 하나까지 견줍니다
  • 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
  • 쓸 수 있는 말은 파이썬, 자바스크립트입니다
  • 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
  • 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
  • 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
  • 케이스는 14개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
  • 케이스 14개를 전부 통과해야 해결입니다.
문제의 요구 사항을 잘 읽고 해결해 주세요. 단, 채점 과정을 건드려 통과한 것처럼 꾸미는 경우 적발 시 제재될 수 있습니다. 제출한 코드는 순위표에 함께 공개됩니다.

예시

공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 14개를 전부 통과해야 해결입니다.

입력
기대 출력
1
aaacaabbaaabbaacaaa
0
1
qccbyaabaccabaazbccw
2
2
ccacbzbcabaaaabacbbcacc
abcccaacbbcaacccba
1
0

풀이

코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.

0자1줄메모리 256MB (적어만 둡니다)기준 169ms

제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.

공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.

이 문제를 푼 사람

아직 없습니다. 첫 번째가 되실 수 있습니다.