본문 바로가기
알고리즘

2번 문제

by nozee 2020. 3. 14.
반응형

문자열 배열(String array)이 주어지면, 제일 긴 공통된 접두사(prefix)의 길이를 찾으시오.

 

Given an array of strings, find the logest common prefix of all strings.

 

예제)

 

Input : ["apple", "apps", "ape"]

Output : 2 // "ap"

 

Input : ["hawaii", "happy"]

Output : 2 // "ha"

 

Input : ["dog", "dogs", "doge"]

Output : 3 // "dog"

 

import java.util.Scanner;
public class TestCode2 {
       public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              
              
              
              System.out.println("문자열을 입력해주세요");
              String input_str = sc.nextLine();
              String str_arr[] = input_str.split(",");
              
              int i = 1;
              
              String prefix = "";
              
              while(true) {
                     
                     int flag = 0;
                     
                     if(i <= str_arr[0].length()) {
                           prefix = str_arr[0].substring(0, i);
                           
                           
                           for(int j = 1; j< str_arr.length ; j++) {
                                  if(str_arr[j].contains(prefix)) {
                                         flag = 0;
                                  }else {
                                         flag = 1;
                                  }
                           }
                     }else {
                           prefix = str_arr[0].substring(0, i-1);
                           break;
                     }
                     
                     if(flag == 0) {
                           i++;
                     }else {
                           prefix = str_arr[0].substring(0, i-1);
                           break;
                     }
                     
                     
              }
              
              System.out.println("prefix = "+ prefix);
              
       }
}
반응형

'알고리즘' 카테고리의 다른 글

3번 문제  (0) 2020.03.14
1번 문제  (0) 2020.03.14