From afb3952211b4a5d9abc39302f04815224615a0d3 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Tue, 24 Sep 2024 17:23:10 +0900
Subject: [PATCH 01/27] =?UTF-8?q?1=EB=8B=A8=EA=B3=84=20-=20=ED=95=99?=
 =?UTF-8?q?=EC=8A=B5=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=8B=A4=EC=8A=B5=20(#5?=
 =?UTF-8?q?569)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/test/java/.gitkeep               |  0
 src/test/java/SetCollectionTest.java | 46 +++++++++++++++++++++
 src/test/java/StringClassTest.java   | 61 ++++++++++++++++++++++++++++
 3 files changed, 107 insertions(+)
 delete mode 100644 src/test/java/.gitkeep
 create mode 100644 src/test/java/SetCollectionTest.java
 create mode 100644 src/test/java/StringClassTest.java

diff --git a/src/test/java/.gitkeep b/src/test/java/.gitkeep
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java
new file mode 100644
index 00000000000..827702129bb
--- /dev/null
+++ b/src/test/java/SetCollectionTest.java
@@ -0,0 +1,46 @@
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
+import org.junit.jupiter.params.provider.ValueSource;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class SetCollectionTest {
+    private Set<Integer> numbers;
+
+    @BeforeEach
+    void setUp() {
+        numbers = new HashSet<>();
+        numbers.add(1);
+        numbers.add(1);
+        numbers.add(2);
+        numbers.add(3);
+    }
+
+    @Test
+    @DisplayName("size()로 Set의 크기 확인")
+    void sizeTest(){
+        assertThat(numbers.size()).isEqualTo(3);
+    }
+
+
+    @ParameterizedTest
+    @ValueSource(ints = {1,2,3})
+    @DisplayName("contains()로 set에 있는 값 확인")
+    void containsTest(int number){
+        assertThat(numbers.contains(number)).isTrue();
+    }
+
+    @ParameterizedTest
+    @CsvSource(value ={"1:true","2:true","3:true","4:false","5:false"},delimiter = ':')
+    @DisplayName("contains()로 다양한 값 확인")
+    void containsTest2(int value, boolean expected){
+        assertThat(numbers.contains(value)).isEqualTo(expected);
+    }
+}
diff --git a/src/test/java/StringClassTest.java b/src/test/java/StringClassTest.java
new file mode 100644
index 00000000000..93f961665a5
--- /dev/null
+++ b/src/test/java/StringClassTest.java
@@ -0,0 +1,61 @@
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+public class StringClassTest {
+    @Test
+    @DisplayName("\"1,2\"를 ,로 split 했을 때 분리되는지")
+    void splitTest1(){
+        //given
+        String str = "1,2";
+
+        //when
+        String[] result = str.split(",");
+
+        //Then
+        assertThat(result).containsExactly("1","2");
+    }
+
+    @Test
+    @DisplayName("\"1\"을 ,로 split 했을 때 {\"1\"}로 반환되는지")
+    void splitTest2(){
+        String[] result = "1".split(",");
+
+        assertThat(result).contains("1");
+    }
+
+    @Test
+    @DisplayName("substring()을 통해 ()제거")
+    void subStringTest(){
+        String str = "(1,2)";
+
+        String result = str.substring(1,str.length()-1);
+
+        assertThat(result).isEqualTo("1,2");
+    }
+
+    @Test
+    @DisplayName("charAt()을 통해 문자열 범위 안 문자 가져오기")
+    void charAt_범위_안(){
+        final String str = "abc";
+
+        char result = str.charAt(1);
+
+        assertThat(result).isEqualTo('b');
+    }
+
+    @Test
+    @DisplayName("charAt()을 통해 문자열 범위 밖 문자 가져오기")
+    void charAt_범위_밖(){
+        final String str = "abc";
+
+        assertThatThrownBy(() ->{
+            str.charAt(str.length());
+        }).isInstanceOf(IndexOutOfBoundsException.class)
+                .hasMessageContaining("String index out of range:");
+    }
+
+}

From 7f59c4dd90e6bb47e300aa692eac5de3bcfb4f8c Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 08:51:20 +0900
Subject: [PATCH 02/27] feat: implement requirement 1 - when empty string or
 null is given return 0

---
 src/test/java/SetCollectionTest.java   |  8 ++++----
 src/test/java/StringAddCalculator.java | 27 ++++++++++++++++++++++++++
 src/test/java/StringClassTest.java     |  2 +-
 3 files changed, 32 insertions(+), 5 deletions(-)
 create mode 100644 src/test/java/StringAddCalculator.java

diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java
index 827702129bb..2d0e77344b4 100644
--- a/src/test/java/SetCollectionTest.java
+++ b/src/test/java/SetCollectionTest.java
@@ -11,7 +11,7 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-public class SetCollectionTest {
+class SetCollectionTest {
     private Set<Integer> numbers;
 
     @BeforeEach
@@ -26,15 +26,15 @@ void setUp() {
     @Test
     @DisplayName("size()로 Set의 크기 확인")
     void sizeTest(){
-        assertThat(numbers.size()).isEqualTo(3);
+        assertThat(numbers).hasSize(3);
     }
 
 
     @ParameterizedTest
-    @ValueSource(ints = {1,2,3})
+    @ValueSource(ints = {1, 2, 3})
     @DisplayName("contains()로 set에 있는 값 확인")
     void containsTest(int number){
-        assertThat(numbers.contains(number)).isTrue();
+        assertThat(numbers.contains(number));
     }
 
     @ParameterizedTest
diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java
new file mode 100644
index 00000000000..1d011dddd2e
--- /dev/null
+++ b/src/test/java/StringAddCalculator.java
@@ -0,0 +1,27 @@
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
+import org.junit.jupiter.params.provider.EmptySource;
+import org.junit.jupiter.params.provider.NullSource;
+import org.junit.jupiter.params.provider.ValueSource;
+
+import java.util.Arrays;
+
+class StringAddCalculator {
+    @ParameterizedTest
+    @EmptySource
+    @NullSource
+    @DisplayName("빈 문자열 또는 null이면 0을 반환")
+    void whenGivenNullOrEmpty(String input){
+        String str = input;
+        int result = -1;
+
+        if(str==null || str.equals("")){
+            result = 0;
+        }
+
+        Assertions.assertThat(result).isEqualTo(0);
+    }
+}
diff --git a/src/test/java/StringClassTest.java b/src/test/java/StringClassTest.java
index 93f961665a5..337f3770b72 100644
--- a/src/test/java/StringClassTest.java
+++ b/src/test/java/StringClassTest.java
@@ -5,7 +5,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
-public class StringClassTest {
+class StringClassTest {
     @Test
     @DisplayName("\"1,2\"를 ,로 split 했을 때 분리되는지")
     void splitTest1(){

From a7c96bb384313845273ff5fcb642e5ac914872cf Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 09:03:53 +0900
Subject: [PATCH 03/27] feat: implement requirement 2 - when a number is given
 as String return it as int

---
 src/test/java/StringAddCalculator.java | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java
index 1d011dddd2e..254d8e0ba92 100644
--- a/src/test/java/StringAddCalculator.java
+++ b/src/test/java/StringAddCalculator.java
@@ -24,4 +24,13 @@ void whenGivenNullOrEmpty(String input){
 
         Assertions.assertThat(result).isEqualTo(0);
     }
+
+    @Test
+    @DisplayName("하나의 문자열로 입력할 경우 해당 숫자를 반환한다")
+    void inputOneStringReturnToInteger(){
+        String str = "1";
+        int result = Integer.parseInt(str);
+        Assertions.assertThat(result).isEqualTo(1);
+    }
+
 }

From e8086598d10efdb7dccf0ec0ca46da062c8d252c Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 09:12:17 +0900
Subject: [PATCH 04/27] feat: implement requirement 3

---
 src/test/java/StringAddCalculator.java | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java
index 254d8e0ba92..a561beed589 100644
--- a/src/test/java/StringAddCalculator.java
+++ b/src/test/java/StringAddCalculator.java
@@ -33,4 +33,16 @@ void inputOneStringReturnToInteger(){
         Assertions.assertThat(result).isEqualTo(1);
     }
 
+    @Test
+    @DisplayName("숫자 두 개를 컴파(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다")
+    void sumAndSplitWithComma(){
+        String str = "1,2";
+        String[] strs = str.split(",");
+        int result = 0;
+        for (String s : strs) {
+            result += Integer.parseInt(s);
+        }
+        Assertions.assertThat(result).isEqualTo(3);
+    }
+
 }

From 2724f87dea311f677b3290ac1efe08b1027c8d13 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 09:27:24 +0900
Subject: [PATCH 05/27] implement requirement 4 - use comma or colon as
 delieter

---
 src/test/java/StringAddCalculator.java | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java
index a561beed589..99bd04ab06a 100644
--- a/src/test/java/StringAddCalculator.java
+++ b/src/test/java/StringAddCalculator.java
@@ -14,11 +14,11 @@ class StringAddCalculator {
     @EmptySource
     @NullSource
     @DisplayName("빈 문자열 또는 null이면 0을 반환")
-    void whenGivenNullOrEmpty(String input){
+    void whenGivenNullOrEmpty(String input) {
         String str = input;
         int result = -1;
 
-        if(str==null || str.equals("")){
+        if (str == null || str.equals("")) {
             result = 0;
         }
 
@@ -27,7 +27,7 @@ void whenGivenNullOrEmpty(String input){
 
     @Test
     @DisplayName("하나의 문자열로 입력할 경우 해당 숫자를 반환한다")
-    void inputOneStringReturnToInteger(){
+    void inputOneStringReturnToInteger() {
         String str = "1";
         int result = Integer.parseInt(str);
         Assertions.assertThat(result).isEqualTo(1);
@@ -35,7 +35,7 @@ void inputOneStringReturnToInteger(){
 
     @Test
     @DisplayName("숫자 두 개를 컴파(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다")
-    void sumAndSplitWithComma(){
+    void sumAndSplitWithComma() {
         String str = "1,2";
         String[] strs = str.split(",");
         int result = 0;
@@ -45,4 +45,16 @@ void sumAndSplitWithComma(){
         Assertions.assertThat(result).isEqualTo(3);
     }
 
+    @Test
+    @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다")
+    void sumAndSplitWithCommaOrColon() {
+        String str = "1,2:3";
+        String[] strs = str.split(",|:");
+        int result = 0;
+        for (String s : strs) {
+            result += Integer.parseInt(s);
+        }
+        Assertions.assertThat(result).isEqualTo(6);
+    }
+
 }

From 7255cecbf3a7271026c418dc7da7405e3568d292 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 12:04:55 +0900
Subject: [PATCH 06/27] feat: implement requirement 5 custom delimeter test

---
 src/test/java/StringAddCalculator.java | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java
index 99bd04ab06a..c3486a4c380 100644
--- a/src/test/java/StringAddCalculator.java
+++ b/src/test/java/StringAddCalculator.java
@@ -8,6 +8,8 @@
 import org.junit.jupiter.params.provider.ValueSource;
 
 import java.util.Arrays;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 class StringAddCalculator {
     @ParameterizedTest
@@ -57,4 +59,21 @@ void sumAndSplitWithCommaOrColon() {
         Assertions.assertThat(result).isEqualTo(6);
     }
 
+    @Test
+    @DisplayName(" \"//\" 와 \"\\n\" 문자 사이에 커스텀 구분자를 지정할 수 있다")
+    void customDelimeter() {
+        Matcher m = Pattern.compile("//(.)\n(.*)").matcher("//;\\n1;2;3");
+        String[] tokens;
+        int result = 0;
+        if (m.find()) {
+            String customDelimiter = m.group(1);
+            tokens = m.group(2).split(customDelimiter);
+            // 덧셈 구현
+            for (String token : tokens) {
+                result +=Integer.parseInt(token);
+            }
+            Assertions.assertThat(result).isEqualTo(6);
+        }
+    }
+
 }

From d751a21f6c60402f15e66c5115fe4f0dc8238d04 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 15:08:52 +0900
Subject: [PATCH 07/27] chore : rename file - StringAddCalculator to
 StringAddCalculatorTest (src/test/java)

---
 ...ringAddCalculator.java => StringAddCalculatorTest.java} | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)
 rename src/test/java/{StringAddCalculator.java => StringAddCalculatorTest.java} (91%)

diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculatorTest.java
similarity index 91%
rename from src/test/java/StringAddCalculator.java
rename to src/test/java/StringAddCalculatorTest.java
index c3486a4c380..863b5488e2b 100644
--- a/src/test/java/StringAddCalculator.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -2,16 +2,13 @@
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.CsvSource;
 import org.junit.jupiter.params.provider.EmptySource;
 import org.junit.jupiter.params.provider.NullSource;
-import org.junit.jupiter.params.provider.ValueSource;
 
-import java.util.Arrays;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-class StringAddCalculator {
+class StringAddCalculatorTest {
     @ParameterizedTest
     @EmptySource
     @NullSource
@@ -70,7 +67,7 @@ void customDelimeter() {
             tokens = m.group(2).split(customDelimiter);
             // 덧셈 구현
             for (String token : tokens) {
-                result +=Integer.parseInt(token);
+                result += Integer.parseInt(token);
             }
             Assertions.assertThat(result).isEqualTo(6);
         }

From 81050ba94cf88bc37bcc8a9244336c717524047f Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 15:29:59 +0900
Subject: [PATCH 08/27] feat : implement requirement 6 - when negative number
 is given, RuntimeException is thrown

---
 src/main/java/StringAddCalculator.java     |  7 +++++++
 src/test/java/StringAddCalculatorTest.java | 15 +++++++++++++++
 2 files changed, 22 insertions(+)
 create mode 100644 src/main/java/StringAddCalculator.java

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
new file mode 100644
index 00000000000..49dc72c0ac4
--- /dev/null
+++ b/src/main/java/StringAddCalculator.java
@@ -0,0 +1,7 @@
+public class StringAddCalculator {
+    public static void validNegative(int num) throws RuntimeException{
+        if (num < 0) {
+            throw new RuntimeException();
+        }
+    }
+}
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index 863b5488e2b..ce2e3d6b99f 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -73,4 +73,19 @@ void customDelimeter() {
         }
     }
 
+    @Test
+    @DisplayName("음수를 전달할 경우 RuntimeException")
+    void negativeReturnRuntimeException() {
+        String str = "-1,2,3";
+        String[] strs = str.split(",");
+        final int result = 0;
+        for (String s : strs) {
+            int num = Integer.parseInt(s);
+            if (num < 0) {
+                Assertions.assertThatThrownBy(() ->
+                                StringAddCalculator.validNegative(num))
+                        .isInstanceOf(RuntimeException.class);
+            }
+        }
+    }
 }

From a6163b76e5b27f5893f2ffe2a40dca902796bb8d Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 15:43:27 +0900
Subject: [PATCH 09/27] =?UTF-8?q?chore=20:=20=EB=AF=B8=EC=82=AC=EC=9A=A9?=
 =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C=20=EB=B0=8F=20?=
 =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80=20-=20give=20when=20the?=
 =?UTF-8?q?n=20=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80=20(src/test/java/St?=
 =?UTF-8?q?ringAddCalculatorTest)=20-=20.gitkeep=20=ED=8C=8C=EC=9D=BC=20?=
 =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20(src/main/java)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/.gitkeep                     |  0
 src/test/java/StringAddCalculatorTest.java | 24 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)
 delete mode 100644 src/main/java/.gitkeep

diff --git a/src/main/java/.gitkeep b/src/main/java/.gitkeep
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index ce2e3d6b99f..e9326dc5885 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -14,54 +14,75 @@ class StringAddCalculatorTest {
     @NullSource
     @DisplayName("빈 문자열 또는 null이면 0을 반환")
     void whenGivenNullOrEmpty(String input) {
+        // give
         String str = input;
         int result = -1;
 
+        //when
         if (str == null || str.equals("")) {
             result = 0;
         }
 
+        //then
         Assertions.assertThat(result).isEqualTo(0);
     }
 
     @Test
     @DisplayName("하나의 문자열로 입력할 경우 해당 숫자를 반환한다")
     void inputOneStringReturnToInteger() {
+        //given
         String str = "1";
+
+        //when
         int result = Integer.parseInt(str);
+
+        //then
         Assertions.assertThat(result).isEqualTo(1);
     }
 
     @Test
     @DisplayName("숫자 두 개를 컴파(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다")
     void sumAndSplitWithComma() {
+        //give
         String str = "1,2";
         String[] strs = str.split(",");
         int result = 0;
+
+        //when
         for (String s : strs) {
             result += Integer.parseInt(s);
         }
+
+        //then
         Assertions.assertThat(result).isEqualTo(3);
     }
 
     @Test
     @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다")
     void sumAndSplitWithCommaOrColon() {
+        //give
         String str = "1,2:3";
         String[] strs = str.split(",|:");
         int result = 0;
+
+        //when
         for (String s : strs) {
             result += Integer.parseInt(s);
         }
+
+        //then
         Assertions.assertThat(result).isEqualTo(6);
     }
 
     @Test
     @DisplayName(" \"//\" 와 \"\\n\" 문자 사이에 커스텀 구분자를 지정할 수 있다")
     void customDelimeter() {
+        //give
         Matcher m = Pattern.compile("//(.)\n(.*)").matcher("//;\\n1;2;3");
         String[] tokens;
         int result = 0;
+
+        //when & then
         if (m.find()) {
             String customDelimiter = m.group(1);
             tokens = m.group(2).split(customDelimiter);
@@ -76,9 +97,12 @@ void customDelimeter() {
     @Test
     @DisplayName("음수를 전달할 경우 RuntimeException")
     void negativeReturnRuntimeException() {
+        //give
         String str = "-1,2,3";
         String[] strs = str.split(",");
         final int result = 0;
+
+        //when & then
         for (String s : strs) {
             int num = Integer.parseInt(s);
             if (num < 0) {

From 823b6cbae04340989ccd140b7a756afb6890c186 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 17:03:58 +0900
Subject: [PATCH 10/27] =?UTF-8?q?chore=20:=20=EA=B5=AC=ED=98=84=20?=
 =?UTF-8?q?=EB=82=B4=EC=9A=A9=20=EC=B4=88=EA=B8=B0=ED=99=94?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/test/java/StringAddCalculatorTest.java | 102 ---------------------
 1 file changed, 102 deletions(-)

diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index e9326dc5885..ffd208c2438 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -9,107 +9,5 @@
 import java.util.regex.Pattern;
 
 class StringAddCalculatorTest {
-    @ParameterizedTest
-    @EmptySource
-    @NullSource
-    @DisplayName("빈 문자열 또는 null이면 0을 반환")
-    void whenGivenNullOrEmpty(String input) {
-        // give
-        String str = input;
-        int result = -1;
 
-        //when
-        if (str == null || str.equals("")) {
-            result = 0;
-        }
-
-        //then
-        Assertions.assertThat(result).isEqualTo(0);
-    }
-
-    @Test
-    @DisplayName("하나의 문자열로 입력할 경우 해당 숫자를 반환한다")
-    void inputOneStringReturnToInteger() {
-        //given
-        String str = "1";
-
-        //when
-        int result = Integer.parseInt(str);
-
-        //then
-        Assertions.assertThat(result).isEqualTo(1);
-    }
-
-    @Test
-    @DisplayName("숫자 두 개를 컴파(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다")
-    void sumAndSplitWithComma() {
-        //give
-        String str = "1,2";
-        String[] strs = str.split(",");
-        int result = 0;
-
-        //when
-        for (String s : strs) {
-            result += Integer.parseInt(s);
-        }
-
-        //then
-        Assertions.assertThat(result).isEqualTo(3);
-    }
-
-    @Test
-    @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다")
-    void sumAndSplitWithCommaOrColon() {
-        //give
-        String str = "1,2:3";
-        String[] strs = str.split(",|:");
-        int result = 0;
-
-        //when
-        for (String s : strs) {
-            result += Integer.parseInt(s);
-        }
-
-        //then
-        Assertions.assertThat(result).isEqualTo(6);
-    }
-
-    @Test
-    @DisplayName(" \"//\" 와 \"\\n\" 문자 사이에 커스텀 구분자를 지정할 수 있다")
-    void customDelimeter() {
-        //give
-        Matcher m = Pattern.compile("//(.)\n(.*)").matcher("//;\\n1;2;3");
-        String[] tokens;
-        int result = 0;
-
-        //when & then
-        if (m.find()) {
-            String customDelimiter = m.group(1);
-            tokens = m.group(2).split(customDelimiter);
-            // 덧셈 구현
-            for (String token : tokens) {
-                result += Integer.parseInt(token);
-            }
-            Assertions.assertThat(result).isEqualTo(6);
-        }
-    }
-
-    @Test
-    @DisplayName("음수를 전달할 경우 RuntimeException")
-    void negativeReturnRuntimeException() {
-        //give
-        String str = "-1,2,3";
-        String[] strs = str.split(",");
-        final int result = 0;
-
-        //when & then
-        for (String s : strs) {
-            int num = Integer.parseInt(s);
-            if (num < 0) {
-                Assertions.assertThatThrownBy(() ->
-                                StringAddCalculator.validNegative(num))
-                        .isInstanceOf(RuntimeException.class);
-            }
-        }
-    }
 }

From bedc9d1068073a813cf819224cc587797db19cc2 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 17:16:32 +0900
Subject: [PATCH 11/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?=
 =?UTF-8?q?=ED=95=AD1=20=EA=B5=AC=ED=98=84=20-=20=EB=B9=88=20=EB=AC=B8?=
 =?UTF-8?q?=EC=9E=90=EC=97=B4=20=EB=98=90=EB=8A=94=20null=20=EC=9D=B4?=
 =?UTF-8?q?=EB=A9=B4=200=EC=9D=84=20=EB=B0=98=ED=99=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     | 7 +++++++
 src/test/java/StringAddCalculatorTest.java | 8 ++++++++
 2 files changed, 15 insertions(+)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index 49dc72c0ac4..f5197d4fa3a 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -4,4 +4,11 @@ public static void validNegative(int num) throws RuntimeException{
             throw new RuntimeException();
         }
     }
+
+    public static int emptyOrNull(String input) {
+        if(input == null||input.isEmpty()) {
+            return 0;
+        }
+        return 1;
+    }
 }
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index ffd208c2438..a7c25b7df8d 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -9,5 +9,13 @@
 import java.util.regex.Pattern;
 
 class StringAddCalculatorTest {
+    @ParameterizedTest
+    @EmptySource
+    @NullSource
+    @DisplayName("빈 문자열 또는 null이면 0을 반환")
+    void whenGivenNullOrEmpty(String input) {
+        int result = StringAddCalculator.emptyOrNull(input);
 
+        Assertions.assertThat(result).isEqualTo(0);
+    }
 }

From 00b6c48e85e6ad46867b7d5a0240bae4c312d0d9 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 21:52:28 +0900
Subject: [PATCH 12/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?=
 =?UTF-8?q?=ED=95=AD2=20=EA=B5=AC=ED=98=84=20-=20=EC=88=AB=EC=9E=90=20?=
 =?UTF-8?q?=ED=95=98=EB=82=98=20=EC=9E=85=EB=A0=A5=ED=95=A0=20=EA=B2=BD?=
 =?UTF-8?q?=EC=9A=B0=20=ED=95=B4=EB=8B=B9=20=EC=88=AB=EC=9E=90=20=EB=B0=98?=
 =?UTF-8?q?=ED=99=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     |  4 ++++
 src/test/java/StringAddCalculatorTest.java | 15 ++++++++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index f5197d4fa3a..abdbb540d4c 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -11,4 +11,8 @@ public static int emptyOrNull(String input) {
         }
         return 1;
     }
+
+    public static int processOneNumberString(String input) {
+        return Integer.parseInt(input);
+    }
 }
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index a7c25b7df8d..15b957660e8 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -2,12 +2,16 @@
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 import org.junit.jupiter.params.provider.EmptySource;
 import org.junit.jupiter.params.provider.NullSource;
+import org.junit.jupiter.params.provider.ValueSource;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 class StringAddCalculatorTest {
     @ParameterizedTest
     @EmptySource
@@ -16,6 +20,15 @@ class StringAddCalculatorTest {
     void whenGivenNullOrEmpty(String input) {
         int result = StringAddCalculator.emptyOrNull(input);
 
-        Assertions.assertThat(result).isEqualTo(0);
+        assertThat(result).isEqualTo(0);
     }
+
+    @Test
+    @DisplayName("숫자 하나를 입력할 경우 해당 숫자를 반환한다")
+    void inputOneNumberStringReturnToInteger(){
+        int intNum = StringAddCalculator.processOneNumberString("1");
+
+        assertThat(intNum).isEqualTo(1);
+    }
+
 }

From 4f9474d187841712e94f8a9ee630c6c06b466bf1 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 22:03:35 +0900
Subject: [PATCH 13/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?=
 =?UTF-8?q?=ED=95=AD=203=20=EA=B5=AC=ED=98=84=20-=20=EC=88=AB=EC=9E=90=20?=
 =?UTF-8?q?=EB=91=90=EA=B0=9C=EB=A5=BC=20=EC=BB=B4=EB=A7=88=20=EA=B5=AC?=
 =?UTF-8?q?=EB=B6=84=EC=9E=90=EB=A1=9C=20=EC=9E=85=EB=A0=A5=ED=95=A0=20?=
 =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EB=91=90=20=EC=88=AB=EC=9E=90=EC=9D=98=20?=
 =?UTF-8?q?=ED=95=A9=20=EB=B0=98=ED=99=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     | 13 +++++++++++--
 src/test/java/StringAddCalculatorTest.java | 14 +++++++++++---
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index abdbb540d4c..db08ead2f53 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -1,12 +1,12 @@
 public class StringAddCalculator {
-    public static void validNegative(int num) throws RuntimeException{
+    public static void validNegative(int num) throws RuntimeException {
         if (num < 0) {
             throw new RuntimeException();
         }
     }
 
     public static int emptyOrNull(String input) {
-        if(input == null||input.isEmpty()) {
+        if (input == null || input.isEmpty()) {
             return 0;
         }
         return 1;
@@ -15,4 +15,13 @@ public static int emptyOrNull(String input) {
     public static int processOneNumberString(String input) {
         return Integer.parseInt(input);
     }
+
+    public static int splitAndSumWithComma(String input) {
+        String[] splited = input.split(",");
+        int summation = 0;
+        for (String s : splited) {
+            summation += Integer.parseInt(s);
+        }
+        return summation;
+    }
 }
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index 15b957660e8..fe11b3a0a67 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -25,10 +25,18 @@ void whenGivenNullOrEmpty(String input) {
 
     @Test
     @DisplayName("숫자 하나를 입력할 경우 해당 숫자를 반환한다")
-    void inputOneNumberStringReturnToInteger(){
-        int intNum = StringAddCalculator.processOneNumberString("1");
+    void inputOneNumberStringReturnToInteger() {
+        int result = StringAddCalculator.processOneNumberString("1");
 
-        assertThat(intNum).isEqualTo(1);
+        assertThat(result).isEqualTo(1);
     }
 
+    @ParameterizedTest
+    @ValueSource(strings ={"1,2"})
+    @DisplayName("숫자 두개를 컴마(,) 구분자로 입력할 경우 두 숫자의 합을 반환")
+    void splitAndSumWithComma(String input) {
+        int result = StringAddCalculator.splitAndSumWithComma(input);
+
+        assertThat(result).isEqualTo(3);
+    }
 }

From 7da87902532ac475500c77ca247eb728bd96b6f3 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 22:14:45 +0900
Subject: [PATCH 14/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?=
 =?UTF-8?q?=ED=95=AD=204=20=EA=B5=AC=ED=98=84=20-=20=EA=B5=AC=EB=B6=84?=
 =?UTF-8?q?=EC=9E=90=EB=A5=BC=20=EC=BB=B4=EB=A7=88=20=EC=9D=B4=EC=99=B8?=
 =?UTF-8?q?=EC=97=90=20=EC=BD=9C=EB=A1=A0=EC=9D=84=20=EC=82=AC=EC=9A=A9?=
 =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8B=A4=20-=20=EC=82=AC?=
 =?UTF-8?q?=EC=9A=A9=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20import=20?=
 =?UTF-8?q?=EA=B5=AC=EB=AC=B8=20=EC=A0=9C=EA=B1=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     |  9 +++++++++
 src/test/java/StringAddCalculatorTest.java | 16 ++++++++++------
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index db08ead2f53..b7ca379d1b7 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -24,4 +24,13 @@ public static int splitAndSumWithComma(String input) {
         }
         return summation;
     }
+
+    public static int splitAndSumWithCommaOrColon(String input) {
+        String[] splited = input.split(",|:");
+        int summation = 0;
+        for (String s : splited) {
+            summation += Integer.parseInt(s);
+        }
+        return summation;
+    }
 }
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index fe11b3a0a67..8c10411cc8c 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -1,15 +1,10 @@
-import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.CsvSource;
 import org.junit.jupiter.params.provider.EmptySource;
 import org.junit.jupiter.params.provider.NullSource;
 import org.junit.jupiter.params.provider.ValueSource;
 
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 import static org.assertj.core.api.Assertions.assertThat;
 
 class StringAddCalculatorTest {
@@ -32,11 +27,20 @@ void inputOneNumberStringReturnToInteger() {
     }
 
     @ParameterizedTest
-    @ValueSource(strings ={"1,2"})
+    @ValueSource(strings = {"1,2"})
     @DisplayName("숫자 두개를 컴마(,) 구분자로 입력할 경우 두 숫자의 합을 반환")
     void splitAndSumWithComma(String input) {
         int result = StringAddCalculator.splitAndSumWithComma(input);
 
         assertThat(result).isEqualTo(3);
     }
+
+    @ParameterizedTest
+    @ValueSource(strings = {"1,2:3"})
+    @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다")
+    void splitAndSumWithCommaOrColon(String input) {
+        int result = StringAddCalculator.splitAndSumWithCommaOrColon(input);
+
+        assertThat(result).isEqualTo(6);
+    }
 }

From e557d7aaad4e6dae6b4df1e2713c7f688eff02af Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 22:29:19 +0900
Subject: [PATCH 15/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?=
 =?UTF-8?q?=ED=95=AD=205=20=EA=B5=AC=ED=98=84=20-=20=EC=BB=A4=EC=8A=A4?=
 =?UTF-8?q?=ED=85=80=20=EA=B5=AC=EB=B6=84=EC=9E=90=20=EC=82=AC=EC=9A=A9?=
 =?UTF-8?q?=EB=A5=BC=20=EC=A7=80=EC=A0=95=ED=95=A0=20=EC=88=98=20=EC=9E=88?=
 =?UTF-8?q?=EB=8B=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     | 18 ++++++++++++++++++
 src/test/java/SetCollectionTest.java       |  1 -
 src/test/java/StringAddCalculatorTest.java | 10 ++++++++++
 src/test/java/StringClassTest.java         |  1 -
 4 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index b7ca379d1b7..414791aed6b 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -1,3 +1,6 @@
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 public class StringAddCalculator {
     public static void validNegative(int num) throws RuntimeException {
         if (num < 0) {
@@ -33,4 +36,19 @@ public static int splitAndSumWithCommaOrColon(String input) {
         }
         return summation;
     }
+
+    public static int splitWithCustomDelimeter(String input) {
+        Matcher m = Pattern.compile("//(.)\n(.*)").matcher(input);
+        int summation = 0;
+        if (m.find()) {
+            String customDelimiter = m.group(1);
+            String[] tokens = m.group(2).split(customDelimiter);
+            for (String token : tokens) {
+                summation += Integer.parseInt(token);
+            }
+            return summation;
+        }
+        return -1;
+    }
+
 }
diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java
index 2d0e77344b4..78b6a5d00ce 100644
--- a/src/test/java/SetCollectionTest.java
+++ b/src/test/java/SetCollectionTest.java
@@ -1,4 +1,3 @@
-import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index 8c10411cc8c..e7ac9dec36f 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -43,4 +43,14 @@ void splitAndSumWithCommaOrColon(String input) {
 
         assertThat(result).isEqualTo(6);
     }
+
+    @ParameterizedTest
+    @ValueSource(strings = {"//;\n1;2;3"})
+    @DisplayName("\"//\"와 \"\\n\" 사이의 문자를 커스텀 구분자 사용")
+    void customDelimeter(String input) {
+        int result = StringAddCalculator.splitWithCustomDelimeter(input);
+
+        assertThat(result).isEqualTo(6);
+    }
+
 }
diff --git a/src/test/java/StringClassTest.java b/src/test/java/StringClassTest.java
index 337f3770b72..656b5c8a1d8 100644
--- a/src/test/java/StringClassTest.java
+++ b/src/test/java/StringClassTest.java
@@ -1,4 +1,3 @@
-import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
 

From 7415048c46818529a40280a4ca4591fc5e2d9ebd Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 22:31:47 +0900
Subject: [PATCH 16/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?=
 =?UTF-8?q?=ED=95=AD=206=20=EA=B5=AC=ED=98=84=20-=20=EC=9D=8C=EC=88=98?=
 =?UTF-8?q?=EB=A5=BC=20=EC=A0=84=EB=8B=AC=ED=95=A0=20=EA=B2=BD=EC=9A=B0=20?=
 =?UTF-8?q?RuntimeException=20=EC=98=88=EC=99=B8=EA=B0=80=20=EB=B0=9C?=
 =?UTF-8?q?=EC=83=9D=ED=95=B4=EC=95=BC=20=ED=95=9C=EB=8B=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     | 9 +++++++++
 src/test/java/StringAddCalculatorTest.java | 8 ++++++++
 2 files changed, 17 insertions(+)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index 414791aed6b..e4ec251e590 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -51,4 +51,13 @@ public static int splitWithCustomDelimeter(String input) {
         return -1;
     }
 
+    public static void negativeValidation(String input) {
+        String[] splited = input.split(",");
+        for (String s : splited) {
+            if (Integer.parseInt(s) < 0)
+            {
+                throw new RuntimeException();
+            }
+        }
+    }
 }
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index e7ac9dec36f..bc50f9af953 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -6,6 +6,7 @@
 import org.junit.jupiter.params.provider.ValueSource;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 class StringAddCalculatorTest {
     @ParameterizedTest
@@ -53,4 +54,11 @@ void customDelimeter(String input) {
         assertThat(result).isEqualTo(6);
     }
 
+    @ParameterizedTest
+    @ValueSource(strings = {"-1,2,3"})
+    @DisplayName("음수를 전달할 경우 RuntimeException 발생")
+    void negativeThrowRuntimeException(String input){
+        assertThatThrownBy(() -> StringAddCalculator.negativeValidation(input))
+                .isInstanceOf(RuntimeException.class);
+    }
 }

From 3fad8a68b2d774a668838d6f592b4d782f983b41 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Fri, 27 Sep 2024 23:34:16 +0900
Subject: [PATCH 17/27] =?UTF-8?q?chore=20:=20=EC=83=81=EC=88=98=EC=B6=94?=
 =?UTF-8?q?=EC=B6=9C=20=EB=B0=8F=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20?=
 =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C(validnegative)=20=EC=A0=9C=EA=B1=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index e4ec251e590..3cda6f4f4c0 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -2,11 +2,10 @@
 import java.util.regex.Pattern;
 
 public class StringAddCalculator {
-    public static void validNegative(int num) throws RuntimeException {
-        if (num < 0) {
-            throw new RuntimeException();
-        }
-    }
+
+    public static final String COMMA = ",";
+    public static final String DELIMETER = ",|:";
+    public static final String CUSTOMDELIMETER = "//(.)\n(.*)";
 
     public static int emptyOrNull(String input) {
         if (input == null || input.isEmpty()) {
@@ -20,7 +19,7 @@ public static int processOneNumberString(String input) {
     }
 
     public static int splitAndSumWithComma(String input) {
-        String[] splited = input.split(",");
+        String[] splited = input.split(COMMA);
         int summation = 0;
         for (String s : splited) {
             summation += Integer.parseInt(s);
@@ -29,7 +28,7 @@ public static int splitAndSumWithComma(String input) {
     }
 
     public static int splitAndSumWithCommaOrColon(String input) {
-        String[] splited = input.split(",|:");
+        String[] splited = input.split(DELIMETER);
         int summation = 0;
         for (String s : splited) {
             summation += Integer.parseInt(s);
@@ -38,7 +37,7 @@ public static int splitAndSumWithCommaOrColon(String input) {
     }
 
     public static int splitWithCustomDelimeter(String input) {
-        Matcher m = Pattern.compile("//(.)\n(.*)").matcher(input);
+        Matcher m = Pattern.compile(CUSTOMDELIMETER).matcher(input);
         int summation = 0;
         if (m.find()) {
             String customDelimiter = m.group(1);
@@ -52,7 +51,7 @@ public static int splitWithCustomDelimeter(String input) {
     }
 
     public static void negativeValidation(String input) {
-        String[] splited = input.split(",");
+        String[] splited = input.split(COMMA);
         for (String s : splited) {
             if (Integer.parseInt(s) < 0)
             {

From c8ea667507c8bb9f27e3129d6e92f56cdc84dad4 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 00:10:33 +0900
Subject: [PATCH 18/27] =?UTF-8?q?refactor=20:=20=EC=88=AB=EC=9E=90=20?=
 =?UTF-8?q?=ED=95=A9=EC=9D=84=20=EA=B5=AC=ED=95=98=EB=8A=94=20=EA=B3=B5?=
 =?UTF-8?q?=ED=86=B5=20=EB=A1=9C=EC=A7=81,=20calculateSum=20=EB=A9=94?=
 =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=20=EC=B6=94=EC=B6=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index 3cda6f4f4c0..e30f628cdf6 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -20,19 +20,13 @@ public static int processOneNumberString(String input) {
 
     public static int splitAndSumWithComma(String input) {
         String[] splited = input.split(COMMA);
-        int summation = 0;
-        for (String s : splited) {
-            summation += Integer.parseInt(s);
-        }
+        int summation = calculateSum(splited);
         return summation;
     }
 
     public static int splitAndSumWithCommaOrColon(String input) {
         String[] splited = input.split(DELIMETER);
-        int summation = 0;
-        for (String s : splited) {
-            summation += Integer.parseInt(s);
-        }
+        int summation = calculateSum(splited);
         return summation;
     }
 
@@ -42,9 +36,7 @@ public static int splitWithCustomDelimeter(String input) {
         if (m.find()) {
             String customDelimiter = m.group(1);
             String[] tokens = m.group(2).split(customDelimiter);
-            for (String token : tokens) {
-                summation += Integer.parseInt(token);
-            }
+            summation = calculateSum(tokens);
             return summation;
         }
         return -1;
@@ -59,4 +51,13 @@ public static void negativeValidation(String input) {
             }
         }
     }
+
+    private static int calculateSum(String[] splited) {
+        int summation = 0;
+        for (String s : splited) {
+            summation += Integer.parseInt(s);
+        }
+        return summation;
+    }
+
 }

From 15b23716cc09bf4539ee7ed0546c7f1184b6d4f2 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 00:41:24 +0900
Subject: [PATCH 19/27] =?UTF-8?q?chore=20:=20=EB=B6=88=ED=95=84=EC=9A=94?=
 =?UTF-8?q?=ED=95=9C=20=EC=A7=80=EC=97=AD=EB=B3=80=EC=88=98=20=EC=A0=9C?=
 =?UTF-8?q?=EA=B1=B0=20-=20splitAndSumWithComma=20(src/main/java)=20-=20sp?=
 =?UTF-8?q?litAndSumWithCommaOrColon=20(src/main/java)=20-=20splitWithCust?=
 =?UTF-8?q?omDelimeter=20(src/main/java)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index e30f628cdf6..da6bcc7835d 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -20,14 +20,12 @@ public static int processOneNumberString(String input) {
 
     public static int splitAndSumWithComma(String input) {
         String[] splited = input.split(COMMA);
-        int summation = calculateSum(splited);
-        return summation;
+        return calculateSum(splited);
     }
 
     public static int splitAndSumWithCommaOrColon(String input) {
         String[] splited = input.split(DELIMETER);
-        int summation = calculateSum(splited);
-        return summation;
+        return calculateSum(splited);
     }
 
     public static int splitWithCustomDelimeter(String input) {
@@ -36,8 +34,7 @@ public static int splitWithCustomDelimeter(String input) {
         if (m.find()) {
             String customDelimiter = m.group(1);
             String[] tokens = m.group(2).split(customDelimiter);
-            summation = calculateSum(tokens);
-            return summation;
+            return calculateSum(tokens);
         }
         return -1;
     }

From 2249f0928f683b93eafa024bcc7bd456ba66e248 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 01:14:21 +0900
Subject: [PATCH 20/27] =?UTF-8?q?refactor=20:=20if=EB=AC=B8=20validNegativ?=
 =?UTF-8?q?eNumberString=EB=A9=94=EC=84=9C=EB=93=9C=EB=A1=9C=20=20?=
 =?UTF-8?q?=EB=B6=84=EB=A6=AC=20-=20negativeValidation=20(src/main/java/St?=
 =?UTF-8?q?ringAddCalculator.class)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index da6bcc7835d..64235ae71aa 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -30,7 +30,6 @@ public static int splitAndSumWithCommaOrColon(String input) {
 
     public static int splitWithCustomDelimeter(String input) {
         Matcher m = Pattern.compile(CUSTOMDELIMETER).matcher(input);
-        int summation = 0;
         if (m.find()) {
             String customDelimiter = m.group(1);
             String[] tokens = m.group(2).split(customDelimiter);
@@ -42,10 +41,14 @@ public static int splitWithCustomDelimeter(String input) {
     public static void negativeValidation(String input) {
         String[] splited = input.split(COMMA);
         for (String s : splited) {
-            if (Integer.parseInt(s) < 0)
-            {
-                throw new RuntimeException();
-            }
+            validNegativeNumberString(s);
+        }
+    }
+
+    private static void validNegativeNumberString(String s) {
+        if (Integer.parseInt(s) < 0)
+        {
+            throw new RuntimeException();
         }
     }
 

From 188ea61acb9ad125499f534a0d34a6069cc5db4a Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 01:37:21 +0900
Subject: [PATCH 21/27] =?UTF-8?q?refactor=20:=20=EC=A0=95=EC=88=98=20?=
 =?UTF-8?q?=ED=98=95=EB=B3=80=ED=99=98=20toInt()=EB=A9=94=EC=84=9C?=
 =?UTF-8?q?=EB=93=9C=EB=A1=9C=20=EC=B1=85=EC=9E=84=20=EB=B6=84=EB=A6=AC=20?=
 =?UTF-8?q?-=20calculateSum(src/main/java/StringAddCalculator.class)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index 64235ae71aa..4b7f9e18048 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -20,12 +20,12 @@ public static int processOneNumberString(String input) {
 
     public static int splitAndSumWithComma(String input) {
         String[] splited = input.split(COMMA);
-        return calculateSum(splited);
+        return calculateSum(toInt(splited));
     }
 
     public static int splitAndSumWithCommaOrColon(String input) {
         String[] splited = input.split(DELIMETER);
-        return calculateSum(splited);
+        return calculateSum(toInt(splited));
     }
 
     public static int splitWithCustomDelimeter(String input) {
@@ -33,7 +33,7 @@ public static int splitWithCustomDelimeter(String input) {
         if (m.find()) {
             String customDelimiter = m.group(1);
             String[] tokens = m.group(2).split(customDelimiter);
-            return calculateSum(tokens);
+            return calculateSum(toInt(tokens));
         }
         return -1;
     }
@@ -46,18 +46,25 @@ public static void negativeValidation(String input) {
     }
 
     private static void validNegativeNumberString(String s) {
-        if (Integer.parseInt(s) < 0)
-        {
+        if (Integer.parseInt(s) < 0) {
             throw new RuntimeException();
         }
     }
 
-    private static int calculateSum(String[] splited) {
+    private static int calculateSum(int[] splited) {
         int summation = 0;
-        for (String s : splited) {
-            summation += Integer.parseInt(s);
+        for (int num : splited) {
+            summation += num;
         }
         return summation;
     }
 
+    private static int[] toInt(String[] splited) {
+        int[] numbers = new int[splited.length];
+        for (int i = 0; i < splited.length; i++) {
+            numbers[i] = Integer.parseInt(splited[i]);
+        }
+        return numbers;
+    }
+
 }

From 8604a7e3b9a73ad7410b4ecf1b656bf6f2cb296c Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 01:43:45 +0900
Subject: [PATCH 22/27] =?UTF-8?q?chore=20:=20=EC=BD=94=EB=93=9C=20?=
 =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EC=A0=95=EB=A0=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/test/java/SetCollectionTest.java       |  8 ++++----
 src/test/java/StringAddCalculatorTest.java |  2 +-
 src/test/java/StringClassTest.java         | 16 ++++++++--------
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java
index 78b6a5d00ce..8a596cff7c8 100644
--- a/src/test/java/SetCollectionTest.java
+++ b/src/test/java/SetCollectionTest.java
@@ -24,7 +24,7 @@ void setUp() {
 
     @Test
     @DisplayName("size()로 Set의 크기 확인")
-    void sizeTest(){
+    void sizeTest() {
         assertThat(numbers).hasSize(3);
     }
 
@@ -32,14 +32,14 @@ void sizeTest(){
     @ParameterizedTest
     @ValueSource(ints = {1, 2, 3})
     @DisplayName("contains()로 set에 있는 값 확인")
-    void containsTest(int number){
+    void containsTest(int number) {
         assertThat(numbers.contains(number));
     }
 
     @ParameterizedTest
-    @CsvSource(value ={"1:true","2:true","3:true","4:false","5:false"},delimiter = ':')
+    @CsvSource(value = {"1:true", "2:true", "3:true", "4:false", "5:false"}, delimiter = ':')
     @DisplayName("contains()로 다양한 값 확인")
-    void containsTest2(int value, boolean expected){
+    void containsTest2(int value, boolean expected) {
         assertThat(numbers.contains(value)).isEqualTo(expected);
     }
 }
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index bc50f9af953..a30b4dc68fb 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -57,7 +57,7 @@ void customDelimeter(String input) {
     @ParameterizedTest
     @ValueSource(strings = {"-1,2,3"})
     @DisplayName("음수를 전달할 경우 RuntimeException 발생")
-    void negativeThrowRuntimeException(String input){
+    void negativeThrowRuntimeException(String input) {
         assertThatThrownBy(() -> StringAddCalculator.negativeValidation(input))
                 .isInstanceOf(RuntimeException.class);
     }
diff --git a/src/test/java/StringClassTest.java b/src/test/java/StringClassTest.java
index 656b5c8a1d8..861ae05330e 100644
--- a/src/test/java/StringClassTest.java
+++ b/src/test/java/StringClassTest.java
@@ -7,7 +7,7 @@
 class StringClassTest {
     @Test
     @DisplayName("\"1,2\"를 ,로 split 했을 때 분리되는지")
-    void splitTest1(){
+    void splitTest1() {
         //given
         String str = "1,2";
 
@@ -15,12 +15,12 @@ void splitTest1(){
         String[] result = str.split(",");
 
         //Then
-        assertThat(result).containsExactly("1","2");
+        assertThat(result).containsExactly("1", "2");
     }
 
     @Test
     @DisplayName("\"1\"을 ,로 split 했을 때 {\"1\"}로 반환되는지")
-    void splitTest2(){
+    void splitTest2() {
         String[] result = "1".split(",");
 
         assertThat(result).contains("1");
@@ -28,17 +28,17 @@ void splitTest2(){
 
     @Test
     @DisplayName("substring()을 통해 ()제거")
-    void subStringTest(){
+    void subStringTest() {
         String str = "(1,2)";
 
-        String result = str.substring(1,str.length()-1);
+        String result = str.substring(1, str.length() - 1);
 
         assertThat(result).isEqualTo("1,2");
     }
 
     @Test
     @DisplayName("charAt()을 통해 문자열 범위 안 문자 가져오기")
-    void charAt_범위_안(){
+    void charAt_범위_안() {
         final String str = "abc";
 
         char result = str.charAt(1);
@@ -48,10 +48,10 @@ void subStringTest(){
 
     @Test
     @DisplayName("charAt()을 통해 문자열 범위 밖 문자 가져오기")
-    void charAt_범위_밖(){
+    void charAt_범위_밖() {
         final String str = "abc";
 
-        assertThatThrownBy(() ->{
+        assertThatThrownBy(() -> {
             str.charAt(str.length());
         }).isInstanceOf(IndexOutOfBoundsException.class)
                 .hasMessageContaining("String index out of range:");

From 3f0e23421d8600d62e272c73d8de878bc81e6f52 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 16:37:39 +0900
Subject: [PATCH 23/27] =?UTF-8?q?refactor=20:=20=EC=9A=94=EA=B5=AC?=
 =?UTF-8?q?=EC=82=AC=ED=95=AD=201,=202=20=EC=9E=AC=EA=B5=AC=ED=98=84=20?=
 =?UTF-8?q?=EB=B0=8F=20private()=20=EC=83=9D=EC=84=B1=EC=9E=90=20-=20?=
 =?UTF-8?q?=EC=95=84=EB=9E=98=20=EB=A9=94=EC=84=9C=EB=93=9C=EB=93=A4?=
 =?UTF-8?q?=EC=9D=84=20splitAndSum=EC=97=90=20=EC=9E=AC=EA=B5=AC=ED=98=84?=
 =?UTF-8?q?=20-=20emptyOrNull=20-=20processOneNumberString?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     | 14 +++++++-------
 src/test/java/StringAddCalculatorTest.java |  4 ++--
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index 4b7f9e18048..22ac49b6f1d 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -6,15 +6,16 @@ public class StringAddCalculator {
     public static final String COMMA = ",";
     public static final String DELIMETER = ",|:";
     public static final String CUSTOMDELIMETER = "//(.)\n(.*)";
+    public static final int DEFAULTVALUE_OF_NULL_AND_EMPTYSTRING = 0;
 
-    public static int emptyOrNull(String input) {
-        if (input == null || input.isEmpty()) {
-            return 0;
-        }
-        return 1;
+    private StringAddCalculator() {
+        throw new RuntimeException();
     }
 
-    public static int processOneNumberString(String input) {
+    public static int splitAndSum(String input) {
+        if (input == null || input.isEmpty()) {
+            return DEFAULTVALUE_OF_NULL_AND_EMPTYSTRING;
+        }
         return Integer.parseInt(input);
     }
 
@@ -66,5 +67,4 @@ private static int[] toInt(String[] splited) {
         }
         return numbers;
     }
-
 }
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index a30b4dc68fb..962081887da 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -14,7 +14,7 @@ class StringAddCalculatorTest {
     @NullSource
     @DisplayName("빈 문자열 또는 null이면 0을 반환")
     void whenGivenNullOrEmpty(String input) {
-        int result = StringAddCalculator.emptyOrNull(input);
+        int result = StringAddCalculator.splitAndSum(input);
 
         assertThat(result).isEqualTo(0);
     }
@@ -22,7 +22,7 @@ void whenGivenNullOrEmpty(String input) {
     @Test
     @DisplayName("숫자 하나를 입력할 경우 해당 숫자를 반환한다")
     void inputOneNumberStringReturnToInteger() {
-        int result = StringAddCalculator.processOneNumberString("1");
+        int result = StringAddCalculator.splitAndSum("1");
 
         assertThat(result).isEqualTo(1);
     }

From 639fcfc8010a28faf8b65596d23e64185cd001fa Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 21:50:42 +0900
Subject: [PATCH 24/27] =?UTF-8?q?refactor=20:=20=EC=9A=94=EA=B5=AC?=
 =?UTF-8?q?=EC=82=AC=ED=95=AD=203=20=EC=9E=AC=EA=B5=AC=ED=98=84=20-=20spli?=
 =?UTF-8?q?tAndSumWithComma=EB=A5=BC=20splitAndSum=EC=97=90=20=EA=B5=AC?=
 =?UTF-8?q?=ED=98=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     | 18 +++++++++++-------
 src/test/java/StringAddCalculatorTest.java |  2 +-
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index 22ac49b6f1d..248a8eb7cb4 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -6,7 +6,7 @@ public class StringAddCalculator {
     public static final String COMMA = ",";
     public static final String DELIMETER = ",|:";
     public static final String CUSTOMDELIMETER = "//(.)\n(.*)";
-    public static final int DEFAULTVALUE_OF_NULL_AND_EMPTYSTRING = 0;
+    public static final int DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING = 0;
 
     private StringAddCalculator() {
         throw new RuntimeException();
@@ -14,12 +14,8 @@ private StringAddCalculator() {
 
     public static int splitAndSum(String input) {
         if (input == null || input.isEmpty()) {
-            return DEFAULTVALUE_OF_NULL_AND_EMPTYSTRING;
+            return DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING;
         }
-        return Integer.parseInt(input);
-    }
-
-    public static int splitAndSumWithComma(String input) {
         String[] splited = input.split(COMMA);
         return calculateSum(toInt(splited));
     }
@@ -63,8 +59,16 @@ private static int calculateSum(int[] splited) {
     private static int[] toInt(String[] splited) {
         int[] numbers = new int[splited.length];
         for (int i = 0; i < splited.length; i++) {
-            numbers[i] = Integer.parseInt(splited[i]);
+            numbers[i] = Integer.parseInt(checkDigit(splited[i]));
         }
         return numbers;
     }
+    private static String checkDigit(String input) {
+        for (char c : input.toCharArray()) {
+            if(!Character.isDigit(c)) {
+                throw new RuntimeException();
+            }
+        }
+        return input;
+    }
 }
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index 962081887da..6039ad49986 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -31,7 +31,7 @@ void inputOneNumberStringReturnToInteger() {
     @ValueSource(strings = {"1,2"})
     @DisplayName("숫자 두개를 컴마(,) 구분자로 입력할 경우 두 숫자의 합을 반환")
     void splitAndSumWithComma(String input) {
-        int result = StringAddCalculator.splitAndSumWithComma(input);
+        int result = StringAddCalculator.splitAndSum(input);
 
         assertThat(result).isEqualTo(3);
     }

From 4a4aa080f84260b07957833d8ab637af62c98669 Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 21:53:48 +0900
Subject: [PATCH 25/27] =?UTF-8?q?refactor=20:=20=EC=9A=94=EA=B5=AC?=
 =?UTF-8?q?=EC=82=AC=ED=95=AD=204=20=EC=9E=AC=EA=B5=AC=ED=98=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     | 6 +-----
 src/test/java/StringAddCalculatorTest.java | 2 +-
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index 248a8eb7cb4..88de84f2940 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -16,15 +16,11 @@ public static int splitAndSum(String input) {
         if (input == null || input.isEmpty()) {
             return DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING;
         }
-        String[] splited = input.split(COMMA);
-        return calculateSum(toInt(splited));
-    }
-
-    public static int splitAndSumWithCommaOrColon(String input) {
         String[] splited = input.split(DELIMETER);
         return calculateSum(toInt(splited));
     }
 
+
     public static int splitWithCustomDelimeter(String input) {
         Matcher m = Pattern.compile(CUSTOMDELIMETER).matcher(input);
         if (m.find()) {
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index 6039ad49986..a80803d81ab 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -40,7 +40,7 @@ void splitAndSumWithComma(String input) {
     @ValueSource(strings = {"1,2:3"})
     @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다")
     void splitAndSumWithCommaOrColon(String input) {
-        int result = StringAddCalculator.splitAndSumWithCommaOrColon(input);
+        int result = StringAddCalculator.splitAndSum(input);
 
         assertThat(result).isEqualTo(6);
     }

From 13c211764293eefbd78cdde26fc0b0d1f395dd5d Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 22:46:22 +0900
Subject: [PATCH 26/27] =?UTF-8?q?refactor=20:=20=ED=94=BC=EB=93=9C?=
 =?UTF-8?q?=EB=B0=B1=20=EB=B0=98=EC=98=81=20=EB=B0=8F=20=EC=9A=94=EA=B5=AC?=
 =?UTF-8?q?=EC=82=AC=ED=95=AD=205=20=EC=9E=AC=EA=B5=AC=ED=98=84=20-=20Patt?=
 =?UTF-8?q?ern=20=EA=B0=9D=EC=B2=B4=20=EC=83=81=EC=88=98=EB=A1=9C=20?=
 =?UTF-8?q?=EC=B6=94=EC=B6=9C=20-=20splitWithCustomDelimeter=20=EA=B8=B0?=
 =?UTF-8?q?=EB=8A=A5=EC=9D=84=20splitAndSum=EC=97=90=20=ED=86=B5=ED=95=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     | 12 ++++--------
 src/test/java/StringAddCalculatorTest.java |  2 +-
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index 88de84f2940..cb43eea5032 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -7,6 +7,7 @@ public class StringAddCalculator {
     public static final String DELIMETER = ",|:";
     public static final String CUSTOMDELIMETER = "//(.)\n(.*)";
     public static final int DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING = 0;
+    public static final Pattern pattern = Pattern.compile(CUSTOMDELIMETER);
 
     private StringAddCalculator() {
         throw new RuntimeException();
@@ -16,19 +17,14 @@ public static int splitAndSum(String input) {
         if (input == null || input.isEmpty()) {
             return DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING;
         }
-        String[] splited = input.split(DELIMETER);
-        return calculateSum(toInt(splited));
-    }
-
-
-    public static int splitWithCustomDelimeter(String input) {
-        Matcher m = Pattern.compile(CUSTOMDELIMETER).matcher(input);
+        Matcher m = pattern.matcher(input);
         if (m.find()) {
             String customDelimiter = m.group(1);
             String[] tokens = m.group(2).split(customDelimiter);
             return calculateSum(toInt(tokens));
         }
-        return -1;
+        String[] splited = input.split(DELIMETER);
+        return calculateSum(toInt(splited));
     }
 
     public static void negativeValidation(String input) {
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index a80803d81ab..29c6209f60c 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -49,7 +49,7 @@ void splitAndSumWithCommaOrColon(String input) {
     @ValueSource(strings = {"//;\n1;2;3"})
     @DisplayName("\"//\"와 \"\\n\" 사이의 문자를 커스텀 구분자 사용")
     void customDelimeter(String input) {
-        int result = StringAddCalculator.splitWithCustomDelimeter(input);
+        int result = StringAddCalculator.splitAndSum(input);
 
         assertThat(result).isEqualTo(6);
     }

From f9458c196bd40ec0586ecb303b5f233966afb37a Mon Sep 17 00:00:00 2001
From: kdfasdf <96770726+kdfasdf@users.noreply.github.com>
Date: Sat, 28 Sep 2024 23:40:37 +0900
Subject: [PATCH 27/27] =?UTF-8?q?refactor=20:=20=EC=9A=94=EA=B5=AC?=
 =?UTF-8?q?=EC=82=AC=ED=95=AD=206=20=EC=9E=AC=EA=B5=AC=ED=98=84=20?=
 =?UTF-8?q?=EB=B0=8F=20=ED=94=BC=EB=93=9C=EB=B0=B1=20=EB=B0=98=EC=98=81=20?=
 =?UTF-8?q?-=20StringAddCalculator.java=20(src/main/java)=20-=20negativeVa?=
 =?UTF-8?q?lidation()=EC=9D=84=20splitAndSum()=EC=97=90=20=EA=B8=B0?=
 =?UTF-8?q?=EB=8A=A5=20=ED=86=B5=ED=95=A9=20-=20calculateSum()=EC=97=90=20?=
 =?UTF-8?q?isNegative()=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/StringAddCalculator.java     | 31 +++++++++++-----------
 src/test/java/StringAddCalculatorTest.java |  2 +-
 2 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java
index cb43eea5032..bd29f7decab 100644
--- a/src/main/java/StringAddCalculator.java
+++ b/src/main/java/StringAddCalculator.java
@@ -27,27 +27,21 @@ public static int splitAndSum(String input) {
         return calculateSum(toInt(splited));
     }
 
-    public static void negativeValidation(String input) {
-        String[] splited = input.split(COMMA);
-        for (String s : splited) {
-            validNegativeNumberString(s);
-        }
-    }
-
-    private static void validNegativeNumberString(String s) {
-        if (Integer.parseInt(s) < 0) {
-            throw new RuntimeException();
-        }
-    }
-
     private static int calculateSum(int[] splited) {
         int summation = 0;
         for (int num : splited) {
+            isNegative(num);
             summation += num;
         }
         return summation;
     }
 
+    private static void isNegative(int num) {
+        if (num < 0) {
+            throw new RuntimeException();
+        }
+    }
+
     private static int[] toInt(String[] splited) {
         int[] numbers = new int[splited.length];
         for (int i = 0; i < splited.length; i++) {
@@ -55,12 +49,17 @@ private static int[] toInt(String[] splited) {
         }
         return numbers;
     }
+
     private static String checkDigit(String input) {
         for (char c : input.toCharArray()) {
-            if(!Character.isDigit(c)) {
-                throw new RuntimeException();
-            }
+            valudateDigit(c);
         }
         return input;
     }
+
+    private static void valudateDigit(char c) {
+        if (!Character.isDigit(c)) {
+            throw new RuntimeException();
+        }
+    }
 }
diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java
index 29c6209f60c..408b3a6b84b 100644
--- a/src/test/java/StringAddCalculatorTest.java
+++ b/src/test/java/StringAddCalculatorTest.java
@@ -58,7 +58,7 @@ void customDelimeter(String input) {
     @ValueSource(strings = {"-1,2,3"})
     @DisplayName("음수를 전달할 경우 RuntimeException 발생")
     void negativeThrowRuntimeException(String input) {
-        assertThatThrownBy(() -> StringAddCalculator.negativeValidation(input))
+        assertThatThrownBy(() -> StringAddCalculator.splitAndSum(input))
                 .isInstanceOf(RuntimeException.class);
     }
 }