본문 바로가기
프로그래밍/자바의정석_4_연습문제

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

by 므시칸곰틔군 2014. 7. 24.


/**
 * @author Administrator
 * @문제 [4-4] 1+(-2)+3+(-4)+.. 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오.
 */
public class ex_004 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  // Ex01();

  Ex01();
  Ex02();
 }

 static void Ex01() {
  // 홀수면은 + 짝수면은 -
  int num = 0;
  int count = 0;
  int i = 0;

  while (num < 100) {
   count++;
   i++;

   if (i % 2 == 0) {
    num = num + (i * -1);
   } else {
    num = num + (i);
   }

   System.out.println(num);
  }

  System.out.println("카운트 횟수 : " + count);

 }

 /**
  * 자바의 정석 답.
  */
 static void Ex02() {

  int sum = 0; // 총합을 저장할 변수

  int s = 1; // 값의 부호를 바꿔주는데 사용할 변수

  int num = 0;

  // 조건식의 값이 true이므로 무한반복문이 된다.

  for (int i = 1; true; i++, s = -s) { // 매 반복마다 s의 값은 1, -1, 1, -1...

   num = s * i; // i와 부호(s)를 곱해서 더할 값을 구한다.

   sum += num;

   if (sum >= 100) // 총합이 100보다 같거나 크면 반복문을 빠져 나간다.

    break;

  }

  System.out.println("num=" + num);

  System.out.println("sum=" + sum);
 }
}