본문 바로가기

JAVA/Practice Q

Q6. 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오

// 방법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);