diff --git a/.gitignore b/.gitignore
index b63da45..0dbd813 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,12 @@ build/
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
+.idea/misc.xml
+.idea/workspace.xml
+.idea/uiDesigner.xml
+.idea/vcs.xml
+.idea/material_theme_project_new.xml
+.idea/git_toolbox_prj.xml
*.iws
*.iml
*.ipr
@@ -16,6 +22,11 @@ out/
!**/src/main/**/out/
!**/src/test/**/out/
+# Extra IntelliJ-related configs
+gradle.xml
+aws.xml
+.name
+
### Eclipse ###
.apt_generated
.classpath
diff --git a/.idea/google-java-format.xml b/.idea/google-java-format.xml
new file mode 100644
index 0000000..2aa056d
--- /dev/null
+++ b/.idea/google-java-format.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem1.java b/src/main/java/problem/easy/Problem1.java
index d9ddcd5..564d352 100644
--- a/src/main/java/problem/easy/Problem1.java
+++ b/src/main/java/problem/easy/Problem1.java
@@ -11,6 +11,8 @@ public class Problem1 {
* @return 길이가 5 이상인 문자열만 포함하는 리스트
*/
public static List filterStrings(List strings) {
- return null;
+ return strings.stream()
+ .filter(string -> string.length() >= 5)
+ .toList();
}
}
diff --git a/src/main/java/problem/easy/Problem10.java b/src/main/java/problem/easy/Problem10.java
index cef7ab0..6dda543 100644
--- a/src/main/java/problem/easy/Problem10.java
+++ b/src/main/java/problem/easy/Problem10.java
@@ -2,6 +2,8 @@
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
+
import problem.easy.resources.Customer;
public class Problem10 {
@@ -13,7 +15,7 @@ public class Problem10 {
* @return 나이별로 그룹화된 Map
*/
public static Map> groupCustomersByAge(List customers) {
- // 여기에 코드 작성
- return null;
+ return customers.stream()
+ .collect(Collectors.groupingBy(Customer::getAge));
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem11.java b/src/main/java/problem/easy/Problem11.java
index 381a5d9..a7ddfeb 100644
--- a/src/main/java/problem/easy/Problem11.java
+++ b/src/main/java/problem/easy/Problem11.java
@@ -12,7 +12,8 @@ public class Problem11 {
* @return 10보다 큰 첫 번째 수 (존재하지 않으면 Optional.empty())
*/
public static Optional findFirstGreaterThanTen(Set numbers) {
- // 여기에 코드 작성
- return Optional.empty();
+ return numbers.stream()
+ .filter(number -> number > 10)
+ .findFirst(); // TODO
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem12.java b/src/main/java/problem/easy/Problem12.java
index 307c602..305743d 100644
--- a/src/main/java/problem/easy/Problem12.java
+++ b/src/main/java/problem/easy/Problem12.java
@@ -1,6 +1,7 @@
package problem.easy;
import java.util.Map;
+import java.util.stream.Collectors;
public class Problem12 {
@@ -11,7 +12,10 @@ public class Problem12 {
* @return 문자열 길이를 값으로 가지는 새 Map
*/
public static Map mapStringLength(Map map) {
- // 여기에 코드 작성
- return null;
+ return map.entrySet().stream() // TODO entrySet: key 와 value 를 한 번에 꺼낼 수 있음
+ .collect(Collectors.toMap(
+ Map.Entry::getKey,
+ entry -> entry.getValue() != null ? entry.getValue().length() : 0
+ ));
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem13.java b/src/main/java/problem/easy/Problem13.java
index 8ebfec4..3917117 100644
--- a/src/main/java/problem/easy/Problem13.java
+++ b/src/main/java/problem/easy/Problem13.java
@@ -12,7 +12,11 @@ public class Problem13 {
* @return 각 요소에 2를 곱한 새 Queue
*/
public static Queue doubleEach(Queue numbers) {
- // 여기에 코드 작성
- return new LinkedList<>();
+ return new LinkedList<>(
+ numbers.stream()
+ .map(number -> number * 2)
+ .toList()
+ );
}
+
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem14.java b/src/main/java/problem/easy/Problem14.java
index facf9cf..f504097 100644
--- a/src/main/java/problem/easy/Problem14.java
+++ b/src/main/java/problem/easy/Problem14.java
@@ -1,6 +1,8 @@
package problem.easy;
+import java.util.Collections;
import java.util.Map;
+import java.util.stream.Collectors;
public class Problem14 {
@@ -11,7 +13,16 @@ public class Problem14 {
* @return 길이가 3 이상인 키를 포함하는 새 Map
*/
public static Map filterKeys(Map map) {
- // 여기에 코드 작성
- return null;
+ return map.entrySet()
+ .stream()
+ .filter(
+ entry -> entry.getKey() != null && entry.getKey().length() >= 3 // TODO if 문을 별도로 사용할 필요가 없네?
+ )
+ .collect(Collectors.toMap(
+ Map.Entry::getKey, // key 생성 방법
+ Map.Entry::getValue, // value 생성 방법
+ (oldValue, newValue) -> oldValue, // key 충돌 시 처리 방법 (key가 중복되면 새 값은 버리고 기존 값은 유지)
+ Collections::emptyMap // 어떤 Map 구현체를 만들지 (ex. HashMap, LinkedHashMap, TreeMap, .. )
+ ));
}
}
diff --git a/src/main/java/problem/easy/Problem15.java b/src/main/java/problem/easy/Problem15.java
index c2e8357..c11dd79 100644
--- a/src/main/java/problem/easy/Problem15.java
+++ b/src/main/java/problem/easy/Problem15.java
@@ -2,6 +2,7 @@
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
public class Problem15 {
@@ -12,7 +13,9 @@ public class Problem15 {
* @return 'apple'을 값으로 가지는 모든 키의 Set
*/
public static Set keysForValue(Map map, String value) {
- // 여기에 코드 작성
- return null;
+ return map.entrySet()
+ .stream().filter(entry -> entry.getValue().equals("apple"))
+ .map(Map.Entry::getKey)
+ .collect(Collectors.toSet());
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem16.java b/src/main/java/problem/easy/Problem16.java
index a9f94ed..bff6537 100644
--- a/src/main/java/problem/easy/Problem16.java
+++ b/src/main/java/problem/easy/Problem16.java
@@ -1,6 +1,8 @@
package problem.easy;
+import java.util.Arrays;
import java.util.Set;
+import java.util.stream.Collectors;
public class Problem16 {
@@ -11,7 +13,8 @@ public class Problem16 {
* @return 생성된 HashSet
*/
public static Set createHashSetFromStream(int[] numbers) {
- // 여기에 코드 작성
- return null;
+ return Arrays.stream(numbers)
+ .boxed()
+ .collect(Collectors.toSet());
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem17.java b/src/main/java/problem/easy/Problem17.java
index 8683f77..5db7d23 100644
--- a/src/main/java/problem/easy/Problem17.java
+++ b/src/main/java/problem/easy/Problem17.java
@@ -1,6 +1,8 @@
package problem.easy;
+import java.util.Arrays;
import java.util.Map;
+import java.util.stream.Collectors;
public class Problem17 {
@@ -12,7 +14,12 @@ public class Problem17 {
* @return 생성된 HashMap
*/
public static Map createHashMapFromStream(String[] strings) {
- // 여기에 코드 작성
- return null;
+ return Arrays.stream(strings)
+ .collect(
+ Collectors.toMap(
+ string -> string,
+ String::length
+ )
+ );
}
}
diff --git a/src/main/java/problem/easy/Problem18.java b/src/main/java/problem/easy/Problem18.java
index 0d26891..19ecb47 100644
--- a/src/main/java/problem/easy/Problem18.java
+++ b/src/main/java/problem/easy/Problem18.java
@@ -1,6 +1,9 @@
package problem.easy;
+import java.util.Arrays;
+import java.util.PriorityQueue;
import java.util.Queue;
+import java.util.stream.Collectors;
public class Problem18 {
@@ -11,7 +14,8 @@ public class Problem18 {
* @return 생성된 PriorityQueue
*/
public static Queue createPriorityQueueFromStream(int[] numbers) {
- // 여기에 코드 작성
- return null;
+ return Arrays.stream(numbers)
+ .boxed()
+ .collect(Collectors.toCollection(PriorityQueue::new));
}
}
diff --git a/src/main/java/problem/easy/Problem19.java b/src/main/java/problem/easy/Problem19.java
index 46edde8..0a14da2 100644
--- a/src/main/java/problem/easy/Problem19.java
+++ b/src/main/java/problem/easy/Problem19.java
@@ -1,6 +1,9 @@
package problem.easy;
+import java.util.Arrays;
import java.util.Map;
+import java.util.TreeMap;
+import java.util.stream.Collectors;
public class Problem19 {
@@ -12,7 +15,14 @@ public class Problem19 {
* @return 생성된 TreeMap
*/
public static Map createTreeMapFromStream(String[] strings) {
- // 여기에 코드 작성
- return null;
+ return Arrays.stream(strings)
+ .collect(
+ Collectors.toMap(
+ string -> string,
+ String::length,
+ (existing, replacement) -> existing,
+ TreeMap::new // TODO "어떤 구현체로 만들지"
+ )
+ );
}
}
diff --git a/src/main/java/problem/easy/Problem2.java b/src/main/java/problem/easy/Problem2.java
index 09b3542..b5aafe8 100644
--- a/src/main/java/problem/easy/Problem2.java
+++ b/src/main/java/problem/easy/Problem2.java
@@ -2,6 +2,7 @@
import java.util.List;
+// TODO
public class Problem2 {
/**
@@ -11,7 +12,8 @@ public class Problem2 {
* @return 각 요소를 제곱한 새 리스트
*/
public static List squareNumbers(List numbers) {
- // 여기에 코드 작성
- return null;
+ return numbers.stream()
+ .map(number -> number * number)
+ .toList();
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem20.java b/src/main/java/problem/easy/Problem20.java
index 826dc06..dbf771c 100644
--- a/src/main/java/problem/easy/Problem20.java
+++ b/src/main/java/problem/easy/Problem20.java
@@ -1,6 +1,9 @@
package problem.easy;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.stream.Collectors;
public class Problem20 {
@@ -12,7 +15,15 @@ public class Problem20 {
* @return 생성된 LinkedHashMap
*/
public static Map createLinkedHashMapFromStream(int[] numbers) {
- // 여기에 코드 작성
- return null;
+ return Arrays.stream(numbers)
+ .boxed()
+ .collect(
+ Collectors.toMap(
+ number -> number,
+ number -> number * number,
+ (olderValue, newValue) -> olderValue,
+ LinkedHashMap::new
+ )
+ );
}
}
diff --git a/src/main/java/problem/easy/Problem21.java b/src/main/java/problem/easy/Problem21.java
index 6a01ccf..665fcbc 100644
--- a/src/main/java/problem/easy/Problem21.java
+++ b/src/main/java/problem/easy/Problem21.java
@@ -11,7 +11,8 @@ public class Problem21 {
* @return 변환된 문자열 리스트
*/
public static List convertToStringList(List numbers) {
- // 여기에 코드 작성
- return null;
+ return numbers.stream()
+ .map(String::valueOf)
+ .toList();
}
}
diff --git a/src/main/java/problem/easy/Problem22.java b/src/main/java/problem/easy/Problem22.java
index a8e5f35..8e3aba0 100644
--- a/src/main/java/problem/easy/Problem22.java
+++ b/src/main/java/problem/easy/Problem22.java
@@ -11,7 +11,8 @@ public class Problem22 {
* @return 대문자로 변환된 문자열 리스트
*/
public static List convertToUpperCase(List strings) {
- // 여기에 코드 작성
- return null;
+ return strings.stream()
+ .map(String::toUpperCase)
+ .toList();
}
}
diff --git a/src/main/java/problem/easy/Problem23.java b/src/main/java/problem/easy/Problem23.java
index c0c26eb..66eb7d3 100644
--- a/src/main/java/problem/easy/Problem23.java
+++ b/src/main/java/problem/easy/Problem23.java
@@ -11,7 +11,8 @@ public class Problem23 {
* @return 각 문자열의 길이 리스트
*/
public static List calculateStringLengths(List strings) {
- // 여기에 코드 작성
- return null;
+ return strings.stream()
+ .map(String::length)
+ .toList();
}
}
diff --git a/src/main/java/problem/easy/Problem24.java b/src/main/java/problem/easy/Problem24.java
index 9a0cccf..02099ec 100644
--- a/src/main/java/problem/easy/Problem24.java
+++ b/src/main/java/problem/easy/Problem24.java
@@ -12,7 +12,6 @@ public class Problem24 {
* @return 주어진 정수가 리스트에 존재하면 true, 그렇지 않으면 false
*/
public static boolean containsNumber(List numbers, int number) {
- // 여기에 코드 작성
- return false;
+ return numbers.contains(number);
}
}
diff --git a/src/main/java/problem/easy/Problem25.java b/src/main/java/problem/easy/Problem25.java
index a507ffa..8c2693b 100644
--- a/src/main/java/problem/easy/Problem25.java
+++ b/src/main/java/problem/easy/Problem25.java
@@ -11,7 +11,7 @@ public class Problem25 {
* @return 모든 요소가 짝수이면 true, 그렇지 않으면 false
*/
public static boolean areAllEven(List numbers) {
- // 여기에 코드 작성
- return false;
+ return numbers.stream()
+ .allMatch(number -> number % 2 == 0); // TODO 모든 요소 --> "allMatch"
}
}
diff --git a/src/main/java/problem/easy/Problem26.java b/src/main/java/problem/easy/Problem26.java
index 19e04f2..e36fca1 100644
--- a/src/main/java/problem/easy/Problem26.java
+++ b/src/main/java/problem/easy/Problem26.java
@@ -5,13 +5,13 @@
public class Problem26 {
/**
- * 주어진 정수 리스트에서 하나 이상의 요소가 10보다 큰지 확인합니다.
+ * 주어진 정수 리스트에서 하나 이상의 요소가 10보다 큰지 확인합니다. --> anyMatch
*
* @param numbers 정수 리스트
* @return 하나 이상의 요소가 10보다 크면 true, 그렇지 않으면 false
*/
public static boolean hasGreaterThanTen(List numbers) {
- // 여기에 코드 작성
- return false;
+ return numbers.stream()
+ .anyMatch(number -> number > 10);
}
}
diff --git a/src/main/java/problem/easy/Problem27.java b/src/main/java/problem/easy/Problem27.java
index 5ac003d..5b18249 100644
--- a/src/main/java/problem/easy/Problem27.java
+++ b/src/main/java/problem/easy/Problem27.java
@@ -12,7 +12,8 @@ public class Problem27 {
* @return 평균 값 (리스트가 비어있으면 OptionalDouble.empty())
*/
public static OptionalDouble calculateAverage(List numbers) {
- // 여기에 코드 작성
- return OptionalDouble.empty();
+ return numbers.stream()
+ .mapToInt(Integer::intValue) // TODO 정수하면 mapToInt + Integer::intValue
+ .average();
}
}
diff --git a/src/main/java/problem/easy/Problem28.java b/src/main/java/problem/easy/Problem28.java
index a1ccab3..726b12c 100644
--- a/src/main/java/problem/easy/Problem28.java
+++ b/src/main/java/problem/easy/Problem28.java
@@ -1,5 +1,6 @@
package problem.easy;
+import java.util.Comparator;
import java.util.List;
import java.util.Optional;
@@ -12,7 +13,7 @@ public class Problem28 {
* @return 가장 긴 문자열 (리스트가 비어있으면 Optional.empty())
*/
public static Optional findLongestString(List strings) {
- // 여기에 코드 작성
- return Optional.empty();
+ return strings.stream()
+ .max(Comparator.comparingInt(String::length)); // TODO .max(String::compareTo) 사전 순 최대값
}
}
diff --git a/src/main/java/problem/easy/Problem29.java b/src/main/java/problem/easy/Problem29.java
index d5d8622..5dd1465 100644
--- a/src/main/java/problem/easy/Problem29.java
+++ b/src/main/java/problem/easy/Problem29.java
@@ -11,7 +11,8 @@ public class Problem29 {
* @return 문자 개수의 총합
*/
public static int totalCharacterCount(List strings) {
- // 여기에 코드 작성
- return 0;
+ return strings.stream()
+ .mapToInt(String::length) // TODO 정수 핸들링 -> mapToInt
+ .sum();
}
}
diff --git a/src/main/java/problem/easy/Problem3.java b/src/main/java/problem/easy/Problem3.java
index b3dc45d..74d1830 100644
--- a/src/main/java/problem/easy/Problem3.java
+++ b/src/main/java/problem/easy/Problem3.java
@@ -11,7 +11,7 @@ public class Problem3 {
* @return 요소들의 합계
*/
public static double sumOfList(List numbers) {
- // 여기에 코드 작성
- return 0.0;
+ return numbers.stream()
+ .reduce(0.0, Double::sum); // TODO 빈 리스트일 때, 0.0 (기본 값 / 항등원) 반환
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem30.java b/src/main/java/problem/easy/Problem30.java
index 98dae4e..ee19dbb 100644
--- a/src/main/java/problem/easy/Problem30.java
+++ b/src/main/java/problem/easy/Problem30.java
@@ -11,7 +11,8 @@ public class Problem30 {
* @return 짝수의 개수
*/
public static long countEvenNumbers(List numbers) {
- // 여기에 코드 작성
- return 0;
+ return numbers.stream()
+ .filter(number -> number % 2 == 0)
+ .count();
}
}
diff --git a/src/main/java/problem/easy/Problem4.java b/src/main/java/problem/easy/Problem4.java
index 90fa688..1e5c48d 100644
--- a/src/main/java/problem/easy/Problem4.java
+++ b/src/main/java/problem/easy/Problem4.java
@@ -3,6 +3,7 @@
import java.util.List;
import java.util.OptionalInt;
+// TODO Returns the value of this Integer as an int.
public class Problem4 {
/**
@@ -13,7 +14,8 @@ public class Problem4 {
* @return 리스트의 최대값
*/
public static OptionalInt findMax(List numbers) {
- // 여기에 코드 작성
- return OptionalInt.empty();
+ return numbers.stream()
+ .mapToInt(Integer::intValue) // 한 번만 언박싱, 이후 모든 연산이 primitive int 로 수행
+ .max();
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem5.java b/src/main/java/problem/easy/Problem5.java
index 59f8b30..524b24f 100644
--- a/src/main/java/problem/easy/Problem5.java
+++ b/src/main/java/problem/easy/Problem5.java
@@ -11,7 +11,7 @@ public class Problem5 {
* @return 연결된 문자열
*/
public static String concatenateStrings(List strings) {
- // 여기에 코드 작성
- return "";
+ return strings.stream()
+ .reduce("", String::concat);
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem6.java b/src/main/java/problem/easy/Problem6.java
index f0c4d5c..c2e0c60 100644
--- a/src/main/java/problem/easy/Problem6.java
+++ b/src/main/java/problem/easy/Problem6.java
@@ -11,7 +11,8 @@ public class Problem6 {
* @return 중복 없는 정수 리스트
*/
public static List removeDuplicates(List numbers) {
- // 여기에 코드 작성
- return null;
+ return numbers.stream()
+ .distinct()
+ .toList();
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem7.java b/src/main/java/problem/easy/Problem7.java
index 13a91b4..98ffdae 100644
--- a/src/main/java/problem/easy/Problem7.java
+++ b/src/main/java/problem/easy/Problem7.java
@@ -11,7 +11,8 @@ public class Problem7 {
* @return 알파벳 순으로 정렬된 문자열 리스트
*/
public static List sortStrings(List strings) {
- // 여기에 코드 작성
- return null;
+ return strings.stream()
+ .sorted()
+ .toList();
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem8.java b/src/main/java/problem/easy/Problem8.java
index c5492d8..edda917 100644
--- a/src/main/java/problem/easy/Problem8.java
+++ b/src/main/java/problem/easy/Problem8.java
@@ -12,7 +12,8 @@ public class Problem8 {
* @return 첫 번째 짝수 (존재하지 않으면 Optional.empty())
*/
public static Optional findFirstEven(List numbers) {
- // 여기에 코드 작성
- return Optional.empty();
+ return numbers.stream()
+ .filter(number -> number % 2 == 0)
+ .findFirst(); // TODO
}
}
\ No newline at end of file
diff --git a/src/main/java/problem/easy/Problem9.java b/src/main/java/problem/easy/Problem9.java
index f7b63ef..ce84389 100644
--- a/src/main/java/problem/easy/Problem9.java
+++ b/src/main/java/problem/easy/Problem9.java
@@ -11,7 +11,14 @@ public class Problem9 {
* @return 변환된 문자열 리스트
*/
public static List transformStrings(List strings) {
- // 여기에 코드 작성
- return null;
+ return strings.stream()
+ .map(string -> { // TODO map
+ if (string.length() >= 3) {
+ return string.toUpperCase();
+ } else {
+ return string;
+ }
+ })
+ .toList();
}
}
\ No newline at end of file