[자바스크립트 연습문제] 8 풀이

이번 글은 연습문제 풀이입니다. 이전 글에서 연습문제를 풀어 보신 분들만 아래 내용을 확인하시길 바랍니다.






풀이

function checkSupplementaryClass(koreanScore, englishScore, mathScore){
  var average = (koreanScore + englishScore + mathScore)/3;
  if(average <= 50){
    console.log("보충수업 대상자입니다");
  }
}

혹은,

function checkSupplementaryClass(koreanScore, englishScore, mathScore){
  if((koreanScore + englishScore + mathScore)/3 <= 50){
    console.log("보충수업 대상자입니다");
  }
}

물론 위 함수에서 사용된 함수명(checkSupplementaryClass), 파라메터 이름들(koreanScore, englishScore, mathScore)이 달라도 상관없습니다. 어떻게 함수를 구성했든 세가지 값을 받아 평균을 구하고 평균의 값이 50이거나 작을 때 "보충수업 대상자입니다"라는 문자열을 출력하면 정답입니다.

위 함수를 만들 때 "보충수업", "국어 점수", "영어 점수" 등을 어떻게 함수명, 파라메터명으로 표현해야할지 고민이셨다면.. 개발자의 고충을 조금 이해하게 된 것입니다. 실제로 프로그래머들은 변수명, 함수명을 정하는데 많은 고민을 합니다.

댓글

T
TAEHO LEE 2020.06.21
  let kor = prompt("국어 성적 : " , '');   let eng = prompt("영어 성적 : " , '');   let math = prompt("수학 성적 : " , '');         let avg = (kor + eng + math)/3;      if(avg <= 50) {        alert("보충수업 대상자")            } else {              alert("합격");        } 이렇게 해도 되나요??
I
Ian H 2020.06.23
@TAEHO LEE,
연습문제의 8번의 포인트는 if/else의 사용법인데 해당 부분은 제대로 작성을 해주셨어요. 하지만 문제를 자세히 읽어보시면 '함수를 만들어 보세요.' 라고 되어 있는데 함수가 아닌 그냥 코드를 작성하셨어요^^;
또 prompt함수를 사용하셨는데, 이 함수는 모든 입력값을 문자열 타입으로 받습니다. 즉 국어 성적을 10, 영어 성적을 10, 수학성적을 10으로 입력하면, kor, eng, math의 값은 10(숫자)가 아니라 '10'(문자열)로 저장이 되요. 문제는 10+10+10은 30이지만, '10'+'10'+'10'은 '101010'이라는 것! 즉 '101010' <= 50은 거짓이 되어 "합격"이라는 메세지를 보게 됩니다.
prompt를 사용하셨으면 parseInt함수를 사용해서 문자열을 숫자로 바꾸어 주셔야 합니다.
  let kor = parseInt(prompt("국어 성적 : " , ''));   let eng = parseInt(prompt("영어 성적 : " , ''));   let math = parseInt(prompt("수학 성적 : " , ''));
이렇게 하면 됩니다.
if/else을 제대로 사용하셨으나, 함수로 작성하지 않으신 점(-25점), 10/10/10을 입력했을 때 '합격'이라는 잘못된 결과가 나오는 점(-25점) 하여 100점 만점에 50점 드리겠습니다^^
P
PIS 2021.03.23
글이 쉽고 재미있고 쓰여서 좋아요! 좋은글 감사합니다 :) name이라는 문자열 변수도 추가해서 코드를 적어봤어요!
function Check(name, kor, math, eng) {     if((kor+math+eng)/3<50) {         console.log(name+"학생은 보충수업 대상자입니다.")     }     else {         console.log(name+"학생은 보충수업 대상자가 아닙니다.")     } }
I
Ian H 2021.03.23
@PIS,
안녕하세요!
코딩의 참맛은 자기 마음대로 할 수 있다는 거죠. 자신의 생각에 맞게 이것 저것 바꿔보면 실력향상에도 도움이 됩니다^^
김현준 2021.05.05
function main(kor, eng, math) {
    kor = Number(kor);     eng = Number(eng);     math = Number(math);
    const avg = (kor+eng+math)/3;     sup_lesson(avg); }
function sup_lesson(avg) {     if(avg <= 50){         console.log('보충수업 대상자입니다.');     } }
main(process.argv[2],process.argv[3],process.argv[4]);
이런식으로 해도 되나요??  더 좋은 방법이 있다면 가르쳐 주세요!! 
I
Ian H 2021.05.05
@김현준,
함수를 2개로 나누셨네요. 물론 가능합니다^^  다만 자바스크립트에서 함수명은 camelCase로 작성합니다. sup_lesson를 supLesson으로 바꾸시면 더 좋은 자바스크립트 코드가 될겁니다!
댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP