
보통 알고리즘 문제를 구현할 경우, for문을 사용할 경우, for문이 더 시간이 적게 걸려 for문을 사용하지만, Spring을 사용하는 프로젝트에서는 Stream을 사용하는 경우가 더 많기 때문에, 해당 방식도 같이 구현해 보았다.
import java.util.stream.*;
class Solution_for {
public String solution(int n) {
String answer = "";
for(int i = 0 ; i < n ; i++){
if(i % 2 == 0){
answer += "수";
}else{
answer += "박";
}
}
return answer;
}
}
class Solution_stream {
public String solution(int n) {
return IntStream.range(0,n)
.mapToObj(i -> i % 2 == 0 ? "수" : "박")
.collect(Collectors.joining());
}
}
import java.util.stream.*;
class Solution_for {
public int solution(int[] a, int[] b) {
int answer = 0;
for(int i = 0 ; i < a.length ; i++){
answer += a[i] * b[i];
}
return answer;
}
}
class Solution_stream {
public int solution(int[] a, int[] b) {
return IntStream.range(0, a.length)
.map(i -> a[i] * b[i])
.sum();
}
}
class Solution_for {
public int solution(int left, int right) {
int answer = 0;
for(int i = left ; i <= right ; i++){
int sum = 0;
for(int j = 1 ; j <= i ; j++){
if(i % j == 0){
sum++;
}
}
answer += (sum % 2 == 0 ? i : -i);
}
return answer;
}
}
class Solution_stream {
public int solution(int left, int right) {
/*
left ~ right까지
i로 하나씩 꺼내서
1 ~ i 까지
j로 하나씩 꺼내서
약수이면 count
count 한 값이 짝수이면 i, 홀수이면 -i
sum
*/
return IntStream.range(left, right + 1)
.map(i -> {
long cnt = IntStream.range(1, i + 1)
.filter(j -> i % j == 0)
.count();
return cnt % 2 == 0 ? i : -i;
})
.sum();
}
}
class Solution_for {
public String solution(String s) {
char[] arr = s.toCharArray();
Arrays.sort(arr);
String answer = "";
for(int i = arr.length - 1 ; i >= 0 ; i--){
answer += arr[i];
}
return answer;
}
}
class Solution_stream {
public String solution(String s) {
/*
s -> char[]로 변환
IntStream에서 -> (char) 통해 Character로 변환
sorted 통해 내림차순으로 정렬
map 통해 Character -> String으로 변환
collect 통해 하나의 String으로 합침
*/
return s.chars()
.mapToObj(c -> (char) c)
.sorted(Collections.reverseOrder())
.map(String::valueOf)
.collect(Collectors.joining());
}
}
class Solution {
public long solution(int price, int money, int count) {
long answer = price * (count * (count + 1)) / 2;
return (money - answer) >= 0 ? 0 : (answer - money);
}
}