[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