[JavaScript] for문으로 홀수 짝수값 각각 더하기

Lpla

·

2021. 3. 19. 23:02

반응형

for문을 사용하여 1에서 20까지 반복하면서

홀수일 경우 홀수끼리 더하고 짝수일 경우 짝수끼리 더한 값을 출력하는 방법에 대해 알아보겠다.

 

1. 1부터 20까지 for문 작성

for(var i=1; i<=20; i++) {
  console.log(i);
}
// 1
// 2
// (중략)
// 20

 

2. 홀수/짝수 구별

해당 값이 홀수인지 짝수인지 구별하려면 나머지(%)를 이용해야 한다.

나머지가 1이라면 짝수, 0이라면 홀수이다.

for(var i=1; i<=20; i++) {
  if(i % 2 == 1) {
  	console.log(i + '은 홀수입니다.');
  } else if (i % 2 == 0) {
    console.log(i + '은 짝수입니다.');
  }
}
// 1은 홀수입니다.
// 2은 짝수입니다.
// (중략)
// 20은 짝수입니다

 

3. i 값 더하기 (변수)

이제 홀짝을 구별했으니 각각 더할 수 있어야 한다.

먼저 쉬운 방법부터 알아보겠다.

홀수와 짝수를 담을 변수를 만들고 홀수라면 홀수 변수에 더하고, 짝수라면 짝수 변수에 더하는 방법이다.

var odd = 0;
var even = 0;

for(var i=1; i<=20; i++) {
  if(i % 2 == 1) {
  	console.log(i + '은 홀수입니다.');
    var odd = odd + i;
  } else if (i % 2 == 0) {
    console.log(i + '은 짝수입니다.');
    var even = even + i;
  }
}

console.log(odd);
// 100
console.log(even);
// 110

처음 odd와 even 변수는 0에서 시작하여 홀수라면 odd에 더해지고 짝수라면 even에 더해진다.

이제 우리가 원하는 결과값을 얻을 수 있다.

 

만약 더하는 것만이 목적이라면 이 방법으로 충분하다.

하지만 욕심을 부려 i값을 어딘가에 보관하고 싶다면 배열을 사용해야 한다.

 

4. i 값 더하기 (배열)

방법은 크게 다르지 않지만 push() 메서드를 알아야 한다.

odd.push(i)는 odd 배열 마지막에 i를 추가하는 것이다.

따라서 odd와 even 배열을 만들고 홀수라면 odd 배열에 푸시, 짝수라면 even 배열에 푸시한다.

var odd = [];
var even = [];

for(var i=1; i<=20; i++) {
  if(i % 2 == 1) {
    odd.push(i);
  } else if (i % 2 == 0) {
    even.push(i);
  }
}
console.log(odd);
// [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
console.log(even);
// [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

 

이제 홀수와 짝수가 서로 다른 배열에 모여 있다.

남은 것은 배열 안의 값들을 모두 더하는 것이다.

이것도 마찬가지로 for문으로 더하되, 배열 안의 값이 총 몇 개인지 구해서 그 개수만큼 반복해야 한다.

배열의 개수는 length() 메서드를 사용한다.

oddLength = odd['length'];
evenLength = even['length'];

console.log(oddLength, evenLength);
// 10 10

 

반복횟수까지 알았으니 이제 반복문을 돌리면 된다.

var odd = [];
var even = [];

for(var i=1; i<=20; i++) {
  if(i % 2 == 1) {
    odd.push(i);
  } else if (i % 2 == 0) {
    even.push(i);
  }
}

oddLength = odd['length'];
oddPlus = 0;
for(i=0; i<oddLength; i++){
  var oddPlus = oddPlus + odd[i]
}
console.log(oddPlus);
// 100

evenLength = even['length'];
evenPlus = 0;
for(i=0; i<evenLength; i++){
  var evenPlus = evenPlus + even[i]
}
console.log(evenPlus);
// 110
반응형