java/자바의 정석 연습문제 오답노트

[조건문과 반복문] 연습문제 4-4

각시탈코더 2022. 9. 29. 14:30

문제

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

 

정답

package Practice;

public class Exercise4_4 {

	public static void main(String[] args) {
		int sum = 0;
		int s = 1;
		int num = 0;
		
		for(int i=1; sum<100;i++, s=-s) { // 반복할 때 마다 s의 값은 1,-1,1,-1을 반복한다.
			num = s*i;
			sum += num;
		}
		
		System.out.println("num="+num);
		System.out.println("sum="+sum);
	}
}

 

1.문제 핵심 key

  • 양수와 음수를 어떻게 번갈아 표현할 것인가?

2.나의 오답원인

  • 양수와 음수를 번갈아 쓰는 표현법을 몰랐다.

 1이 들어있는 변수(s)를 하나 더 만들고 반복문 안에 음수를 양수값과 곱한다. 그러면 1은 값으로는 의미 없지만 양수와 음수를 나타낼 수 있는 수이기에 양수,음수를 번갈아 값을 나타낸다.

 

3.새로 알게 된 사실

  • for문의 매개변수에 i만 들어갈 수 있는게 아니다.(for문의 매개변수로 sum이 들어갔다.)
  • 만약 부호를 바꾸는 작업이 필요하다면 변수(s)를 1로 선언하고 '-'를 붙이는 작업을 반복한다.