JAVA/Practice Q
Q6. 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오
민지짱민지최고
2023. 9. 3. 21:06
// 방법00 - while사용
int a = 1;
int sumz = 0;
while (sumz < 100) {
if (a % 2 == 0) {
sumz -= a;
} else {
sumz += a;
}
a++;
}
System.out.println(a-1);
// 방법01. 홀수일 때 +, 짝수일때 - 하는 방식
System.out.println("======== 방법01 =========");
int sum = 0;
int x = 1;
for(x = 1; sum < 100; x++) {
if(x % 2 == 0) {
sum -= x;
} else {
sum += x;
}
}
System.out.println(x-1);
// x = 199되면 else에 걸리면서 sum이 100이됨. 위로 올라가서 x +1 = 200이되고, sum < 100조건이 false니까 탈출
// ㅇㅋㅇㅋ 이런 알고리즘 때문에 x가 +1돼서 출력된다는걸 생각하고 있어야 함
// 방법02. x-1을 꼭 해야돼?
System.out.println("======== 방법02 =========");
sum = 0;
x = 1;
for(x = 1; ; x++) {
if(x % 2 == 0) {
sum -= x;
} else {
sum += x;
}
if(sum >= 100) {
break;
}
}
System.out.println(x);
// for쪽에 조건식을 비워두고, if로 아에 내가 보기쉬운 조건을 내걸어서 100이되는순간 멈추게해.
// 그니까 x+1도 안하겠지?
// 방법03. 스위칭 변수 이용
System.out.println("======== 방법03 =========");
// Q6. 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오
int i = -1;
int sum2 = 0;
int b = 0;
for(b = 1; sum2 < 100; b++) {
i = i * -1;
sum2 = sum2 + (b*i);
}
System.out.println(b-1);