Friday, October 2, 2015

해킹

문제

해커 선빈이는 서버의 로그를 뒤져본 결과 관리자의 암호를 찾을 수 있는 N개의 단서를 발견했다. 선빈이는 서버의 특성상 단서의 길이는 모두 홀수이고, 암호가 로그에 남으면, 그 암호를 뒤집은 암호도 로그에 있다는 것을 알고 있다. 로그에 남은 단서가 주어질 때, 관리자의 암호를 구하는 프로그램을 작성하여라.

입력형식

첫 번째 줄에는 로그에 남은 단서의 수 N(1≤N≤100)이 주어진다. 두 번째 줄부터 N개의 줄에는 각 단서를 나타내는 문자열이 주어진다. 단서는 영어 소문자로만 이루어져 있으며, 길이는 3 이상 13 이하의 홀수이다.

출력형식

관리자의 암호의 길이와 중간 글자를 출력한다. 답은 유일하다고 가정해도 좋다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.*;

public class Main {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  
  Scanner sc = new Scanner(System.in);
  int N = sc.nextInt();
  
  String[] strArray = new String[N];
  
  for(int i=0 ; i<N ; i++){
   strArray[i] = sc.next();
  }
  
  String[] strReverseArray = new String[N];
  for(int i=0 ; i<N ; i++){
    strReverseArray[i] = new StringBuilder(strArray[i]).reverse().toString();
  }
  
  int pWLength = 0;
  char midCharacter = '0';
  for(int i=0 ; i<N ; i++){
   for(int j=0; j<N; j++){
    if(strArray[i].equals(strReverseArray[j])){
     pWLength = strArray[i].length();
     int midIdx = pWLength / 2;
     midCharacter = strArray[i].charAt(midIdx);
    }
   }
   
  }
  
  System.out.println(pWLength+" "+midCharacter);
  
 }

}

No comments:

Post a Comment