Today Mini Learned :

기록하는 습관 들이기

ACTIVITY/모각코 (2018)

3-1 codewars

얌챠 2019. 1. 10. 21:07

Consecutive strings

String의 배열 strarr가 주어지고 정수 k가 주어진다.


strarr에서 k개가 이어져 있는 연속적인 string에서 그 길이가 가장 긴 것을 가져와서 리턴한다.

단, strarr의 길이가 0이거나 k가 그 길이보다 크거나 k가 음수이거나 0일때는 ""을 리턴한다.


먼저 ""이 되는 조건을 먼저 거르도록 했다.

이때 배열의 길이를 구하려면 배열.length를 사용해야 한다. (문자의 길이는 문자.length()로 ()이 붙는 것이 다르다.)


연속된 string이 가장 길게 되는 것을 찾기 위해서는 여러 경우의 수를 만들어 다 비교해보는 방법도 있지만 좀더 효율적인 방법을 생각해 보았다.

strarr에서 k개만 사용하니까 앞뒤에서 가장 짧은 것들을 strarr-k한 갯수만큼 빼면 될 것 같았다.


start와 end 변수를 만들어서 앞뒤를 나타내고

이 두 인덱스에 해당하는 배열의 값을 비교해서 start++또는 end--로 짧은 부분을 없앤다.

그 후 start부터 end까지를 더한다.


생각했던 방법을 사용했을때 해결이 되지 않아서 보니 맞는 방법이 아니었다.

그냥 가장 길게 되는 값을 일일이 구하는 방법으로 진행하였다.


190110------------------------------------------------

class LongestConsec {

    

    public static String longestConsec(String[] strarr, int k) {

      String result = "";

      int index=0;


    if(!( strarr.length==0 || k>strarr.length || k<=0 )){

      for(int i=0;i<=strarr.length-k;i++){

        if(compareValue(strarr,k,index) < compareValue(strarr,k,i)){

          index = i;

        }

      }

      

      for(int j=0;j<k;j++){

        result = result+ strarr[index+j];

      }

    }


      return result;

    }

    

    private static int compareValue(String[] strarr, int k, int index){

      int value=0;

      for(int i=0;i<k;i++){

        value = value + strarr[index+i].length();

      }

      return value;

    }

}


=> 해결. 문제를 푸는 방법을 잘못 생각하여 한참 헤맸다.

'ACTIVITY > 모각코 (2018)' 카테고리의 다른 글

4-오늘의 목표 (190115)  (0) 2019.01.15
3-결과  (0) 2019.01.10
3-오늘의 목표 (190110)  (0) 2019.01.10
2-결과  (0) 2019.01.08
2-2 leetcode  (0) 2019.01.08