본문 바로가기
CS/Algorithm

[알고리즘][문자열][9933] 민균이의 비밀번호

by 별토끼. 2018. 4. 21.
반응형

[알고리즘][문자열][9933] 민균이의 비밀번호



* 문제

https://www.acmicpc.net/problem/9933



*풀이

 문제에서 팰린드롬을 고려하지 않으면 틀리는 문제이다. 이것때문에 잠깐 고민했지만 그 외에는 어렵지 않게 풀 수 있는 문제였다. 

 팰린드롬이란 aba, 기러기 이런 단어들처럼 한 문장 자체가 거꾸로 해도 같은 단어들을 가리킨다. 이 문제에서는 이 단어를 받으면 출력 결과로 포함하기 때문에 코드를 짤 때 고려해줘야 한다.

 count값으로 답이 1회일 경우만 출력되도록 처리했다.



*코드

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
40
41
42
package algorithm_String;
 
import java.util.Arrays;
import java.util.Scanner;
 
public class q_9933 {
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        /*
         * 1. 숫자를 입력받는다.
         * 2. 숫자만큼 for문 회전해서 단어를 입력받는다.
         * 3 -1. 입력받은 i번째 문자와 이전 문자들 비교
         * 3 -2. 팰린드롬 고려
         */
        int n = scan.nextInt();
        scan.nextLine();
        String[] list = new String[n];
        int cnt = 0;
        char[] result = new char[14];
        for(int i=0;i<n;i++) {
            list[i] = scan.nextLine();
            if(n==1) {
                cnt++;
                result=list[i].toCharArray();
                break;
            }
            String reverse = new StringBuffer(list[i]).reverse().toString();
            
            for(int j=0;j<=i;j++) {
                if(list[j].equals(reverse)) {
                    cnt++;
                    result=list[j].toCharArray();
                }
            }
        }
        if(cnt==1)
            System.out.println(result.length+" "+result[(result.length/2)]);
    }
 
}
 
cs


반응형

댓글