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