일상적 이야기들.

codewar: Scalling Squared Strings. 본문

프로그래밍/알고리즘 문제풀이

codewar: Scalling Squared Strings.

noveljava 2019. 6. 18. 12:00

문제

 - https://www.codewars.com/kata/56ed20a2c4e5d69155000301

 

Codewars: Train your coding skills

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

 

문제풀이

 - 문자열 strng는 "\n" 로 구분이 됩니다.

 - 한 단어를 반복해야하는 k와, \n 단위로 반복해야하는 v가 입력됩니다.

   -> strng : "abc\nbcd", k: 2, v: 2

      -> abc 와 bcd 로 분리

      -> k에 따라, aabbc(각 문자를 k번 반복합니다.)

      -> v에 따라, aabbcc\naabbcc (\n 단위로 반복합니다.)

 

 - 위의 알고리즘에 따라, strng 을 \n 단위로 일단 분리를 합니다. ( strng.split("\n")

 - 그리고, 새로운 단어들을 위한 Array를 선언합니다. ( 하나의 결과가 끝날때마다, \n로 붙혀줘야하는데 편리하게 하기 위함 )

 - 그 이후, 단어를 하나씩 돌아가면서 k번만큼 반복하여 새로운 단어를 생성합니다. ( for(int j=0 ~~ )

 - 생성된 새로운 단어를 v번만큼 생성하여 결과에 저장합니다.

 

 - 모든 loop이 끝이 났다면, "\n"을 덧붙혀서 원하는 하나의 String 으로 만들어 return 시킵니다.

 

 - "" 가 입력되었을 시에는, 결과가 무조건 "" 이므로, 처음에 처리를 해줍니다.

public class Scale {
    
    public static String scale(String strng, int k, int v) {
      if( "" == strng )
        return "";
        
      String[] split_words = strng.split("\n");
      int result_word_size = split_words.length * v;
      
      String[] result_word_list = new String[result_word_size];
      int array_idx = 0;
      for(String word : split_words)
      {
        String change_word = "";
        for(int i=0; i<word.length(); ++i)
        {
          for(int j=0; j<k; ++j)
          {
            change_word += word.charAt(i);
          }
        }
        
        for(int i=0; i<v; ++i)
        {
          result_word_list[array_idx++] = change_word;
        }
      }
      
      String result = String.join("\n", result_word_list);
      
      return result;
    }
}

 

'프로그래밍 > 알고리즘 문제풀이' 카테고리의 다른 글

codewar: int32 to IPv4  (0) 2019.06.21
codewar: Errors: histogram  (0) 2019.06.21
codewar: RemoveString Spaces  (0) 2019.06.18
codewar: Alphabet war  (0) 2019.06.12
codewar: Find the missing letter  (0) 2019.06.12
Comments