Codewars 문제풀기 (03/25)

Duplicate Encoder

  • int와 String을 인자로 받는다.
  • 인자로 받은 String을 인자로 int만큼 반복한 String을 리턴한다.
  • repeatStr(5, “Hello”) –> HelloHelloHelloHelloHello

1. Test를 만들었다.

  • String이 I, repeat수는 6

    • 테스트 코드

        @Test
        public void testShouldReturn6TimesIWhenInputStringIsIAndRepeat6() {
          //Given : Set string I and repeat 6
          int givenRepeat = 6;
          String givenString = "I";
          //When : Call repeatStr
          String actual = Solution.repeatStr(givenRepeat, givenString);
          //Then : Should return IIIIII
          assertEquals("IIIIII", actual);
        }
      
    • 실제 코드

      public class Solution {
          
        public static String repeatStr(final int repeat, final String string) {
          String result = "";
          for (int i = 0; i < repeat; i++) {
            result += string;
          }
          return result;
        }
      }
      
  • String이 Hello, repeat수는 5

    • 테스트 코드

        @Test
        public void testShould5TimesHelloWhenInputStringIsHelloAndRepeat5() {
          //Given : Set string Hello and repeat 5
          int givenRepeat = 5;
          String givenString = "Hello";
          //When : Call repeatStr
          String actual = Solution.repeatStr(givenRepeat, givenString);
          //Then : Should HelloHelloHelloHelloHello
          assertEquals("HelloHelloHelloHelloHello", actual);
        }
      
    • 실제코드 그대로

    • Success(약 8분)

2. 리팩토링

  • 그냥 제출해도 되긴 하는데, String 가지고 연산할 때 StringBuilder쓰는 습관 들이려고 StringBuilder로 바꾸었다.

    public class Solution {
      
      public static String repeatStr(final int repeat, final String string) {
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < repeat; i++) {
          result.append(string);
        }
        return result.toString();
      }
    }
    

3. 답 비교, 느낀점

Best Practice 가장 많이 받은 코드

public class Solution {
    public static String repeatStr(final int repeat, final String string) {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < repeat; i++) {
            sb.append(string);
        }

        return sb.toString();
    }
}
  • 같다.

  • 8Kyu는 이제 쉽게 푸는거 같다. 하루에 한 문제 푸는 습관을 들이고 있는데 8Kyu가 나온 날에는 두 문제 풀어도 될것같다.

댓글남기기