아래 수열의 결과값을 구하는 프로그램을 작성하시오.
1 - 2 + 3 - 4 + 5 - ..... + 99 - 100 = ?
- 1부터 계산하는 경우
private static void plusMinusSequence() {
int result = 1;
for (int i = 1; i < 100; i++) {
if (i % 2 == 0) {
result += i + 1;
} else {
result -= i + 1;
}
}
System.out.println(result);
}
- 0부터 계산하는 경우
private static void plusMinusSequence2() {
int sum = 0;
for (int i = 0; i <= 100; i++) {
if(i%2 != 0){ //홀수이면
sum += i;
}else {
sum -= i;
}
}
System.out.println(sum);
}
- Stream을 사용한 경우
- reduce를 사용할 때 초기값을 넣어주면 return이 int이고 초기값을 넣지 않을 경우 return값이 Optional이다.
private static void plusMinusSequence3() {
System.out.println(IntStream.rangeClosed(0, 100).reduce(0, (a, b) -> b % 2 !=0 ? a + b : a - b));
System.out.println(IntStream.rangeClosed(0, 100).reduce(SequencialSumAndMinus::sumAndMinus).getAsInt());
}
static class SequencialSumAndMinus {
public static int sumAndMinus(int num1, int num2) {
return num2 % 2 !=0 ? num1 + num2 : num1 - num2;
}
}
'알고리즘' 카테고리의 다른 글
퀵 정렬 알고리즘 (0) | 2017.11.15 |
---|---|
삽입 정렬 알고리즘 (0) | 2017.11.15 |
버블정렬 알고리즘 (0) | 2017.11.15 |
리스트 정렬하기 (0) | 2017.11.15 |
빅 오 표현법 살표보기 (0) | 2017.11.15 |