자바스크립트 코딩테스트 강좌, 불우이웃돕기

문제 설명

불우이웃을 돕기 위해 기부금을 모으려 합니다. 각 기부자는 기부 가능한 금액을 입력하면 됩니다. 기부자가 입력한 금액은 리스트에 저장하고, 최종적으로 기부받은 모든 금액의 총합을 계산하는 함수를 구현하세요. 또한, 기부자가 기부할 수 있는 최대 금액은 100000원으로 제한합니다.

입력

기부자 수 n (1 <= n <= 1000)과 각 기부자의 기부 금액이 주어집니다.

출력

전체 기부금의 총합을 출력합니다.

예제 입력

    5
    10000
    25000
    50000
    120000
    30000
    

예제 출력

    95000
    

문제 풀이 접근법

이 문제는 주어진 입력 값을 처리하여 총합을 계산하는 단순한 알고리즘을 요구합니다. 입력으로 주어진 기부 금액을 배열에 저장하고, 배열의 모든 요소를 합산하여 결과를 도출하는 방식으로 접근할 수 있습니다. 다음은 이 문제를 푸는 단계입니다.

1단계: 입력 받기

입력을 받기 위해, 사용자로부터 기부자 수(n)와 각 기부자의 기부 금액을 입력받겠습니다. 이 입력 값들은 배열에 저장됩니다. 기부 금액이 100000원보다 큰 경우는 무시하고, 이를 체크하는 로직이 필요합니다.

2단계: 배열에 기부 금액 저장

올바른 기부 금액만 배열에 추가하고, 총 기부 금액을 계산할 변수를 설정합니다.

3단계: 총 합계 계산 및 출력

배열에 저장된 기부 금액의 합계를 계산하고 결과를 출력합니다.

자바스크립트 코드 구현

이제 전체 로직을 자바스크립트 코드로 구현해 보겠습니다. 다음은 위에서 설명한 로직을 기반으로 한 코드입니다:


function calculateDonation() {
    const n = parseInt(prompt("기부자의 수를 입력하세요: "));
    let donations = [];
    let totalDonation = 0;

    for (let i = 0; i < n; i++) {
        let donation = parseInt(prompt(`${i + 1}번째 기부 금액을 입력하세요: `));

        // 기부 금액이 100000원 이하일 경우에만 배열에 추가
        if (donation <= 100000) {
            donations.push(donation);
            totalDonation += donation;
        } else {
            console.log("기부 금액은 100000원 이하이어야 합니다.");
        }
    }

    console.log(`총 기부금: ${totalDonation}원`);
}

calculateDonation();
    

코드 설명

코드를 분석해보면, calculateDonation 함수가 정의되며, 먼저 사용자가 기부자 수를 입력받습니다. 그 다음 for문을 통해 각 기부 금액을 입력받고, 조건문으로 기부 금액이 100000원 이하인 경우에만 배열에 추가하며 총합을 계산합니다. 기부 금액이 초과할 경우 경고 메시지를 출력합니다. 마지막으로 총 기부금액을 출력합니다.

결론

이번 강좌에서는 자바스크립트를 사용하여 기부 데이터를 관리하는 간단한 프로그램을 구현해 보았습니다. 이 코드는 기부금 총합을 쉽게 계산할 수 있으며, 기부자 수와 기부 금액의 유효성을 체크하는 로직을 포함하고 있습니다. 이런 방식으로 간단한 문제를 해결해 나가는 경험을 통해 알고리즘 문제 해결에도 자신감을 가질 수 있습니다.

추가적인 연습 문제

문제 해결을 위한 연습을 위해 아래와 같은 문제를 추가로 해결해 보세요:

  1. 기부자의 기부 금액을 오름차순으로 정렬하여 출력하는 기능 추가하기
  2. 기부자의 평균 기부 금액을 계산하기
  3. 기부자 수가 10명 이상일 때, 10%의 추가 기부금을 자동으로 더하는 기능 구현하기

마무리

프로그래밍 연습은 단순히 문제를 푸는 것 이상으로 깊은 이해를 필요로 합니다. 문제를 해결해가는 과정에서 얻는 경험과 지식을 바탕으로, 더 나아가 자신만의 프로그램을 만들거나 더 복잡한 알고리즘 문제를 다룰 수 있는 자신감을 얻기 바랍니다.