(SEB_FE) Section1 Unit5 조건문 연습 문제

PYM·2023년 2월 22일
0

(SEB_FE) SECTION1

목록 보기
22/38
post-thumbnail

⭐Q.06_(advanced)convertScoreToGradeWithPlusAndMinus

문제

점수를 입력받아 점수에 해당하는 등급을 리턴해야 합니다.

출력
string 타입을 리턴해야 합니다.
각 등급의 최저 점수는 아래와 같습니다. ('F'의 경우 최대 점수를 표기)
90 이상 --> 'A'
80 이상 --> 'B'
70 이상 --> 'C'
60 이상 --> 'D'
60 미만 --> 'F'

주의사항
만약 주어진 점수가 100을 초과하거나 0 미만인 경우, 문자열 'INVALID SCORE'를 리턴해야 합니다.
각 등급의 최고 점수보다 7점 이하인 경우, 등급과 함께 '-'를 리턴해야 합니다. (단, 93점의 경우에는 A를 리턴해야 합니다.)
각 등급의 최저 점수보다 8점 이상인 경우, 등급과 함께 '+'를 리턴해야 합니다.
F+ 와 F- 는 존재하지 않습니다.

💫내 코드

function convertScoreToGradeWithPlusAndMinus(score) {
  // TODO: 여기에 코드를 작성합니다.
  // 의사코드 
  //1. score가 100을 초과하거나 0 미만인 경우, 문자열 'INVALID SCORE'를 리턴
  //2. 그렇지 않고, 만약 score가 90이상이면 'A' 리턴. 
  //**최고 점수**보다 7점 이하인 경우, 등급과 함께 '-'를 리턴, 최저 점수보다 8점 이상인 경우, 등급과 함께 '+'를 리턴
  //90점은 최고점수보다 6점 이하인 경우. 
  // 생략 

  if(score > 100 || score < 0){
    return 'INVALID SCORE'
  }
  else if (score >= 90){
    if(score <= 100 - 6){
      return 'A-'
    }
    else if(score >= 90 + 8){
      return 'A+'
    }else {
      return 'A'
    }
  }
  else if (score >= 80){
    if(score <= 90 - 7){
      return 'B-'
    }
    else if(score >= 80 + 8){
      return 'B+'
    }else {
      return 'B'
    }
  }
  else if (score >= 70){
    if(score <= 80 - 7){
      return 'C-'
    }
    else if(score >= 70 + 8){
      return 'C+'
    }else {
      return 'C'
    }
  }
  else if (score >= 60){
    if(score <=  70 - 7){
      return 'D-'
    }
    else if(score >= 60 + 8){
      return 'D+'
    }else {
      return 'D'
    }
  }
  else {
    return 'F'
  }
}

💫Reference

function plusOrMinus(score) {
  const extra = score % 10;
  if (extra <= 2) {
    return '-';
  } else if (extra >= 8) {
    return '+';
  } else {
    return '';
  }
}

function convertScoreToGradeWithPlusAndMinus(score) {
  let grade;
  if (score > 100 || score < 0) {
    return 'INVALID SCORE';
  }
  if (score === 100) {
    return 'A+';
  }
  if (score >= 90) {
    grade = 'A';
  } else if (score >= 80) {
    grade = 'B';
  } else if (score >= 70) {
    grade = 'C';
  } else if (score >= 60) {
    grade = 'D';
  } else if (score >= 0) {
    grade = 'F';
  }

  if (grade !== 'F') {
    grade = grade + plusOrMinus(score);
  }
  return grade;
}

난 -와 + 기호를 아예 붙여서 출력해 줬는데 Reference 에서는 부호를 리턴하는 또 다른 함수를 작성해 줬다. 새로운 방법을 알게되서 좋다!

⭐Q. addOneSecond

문제

시, 분, 초를 입력받아 1초를 더한 결과값을 특정 형태의 메시지로 리턴해야 합니다.

💫내 코드

function addOneSecond(hour, minute, second) {
  // TODO: 여기에 코드를 작성합니다.
  // 의사코드 
  //1. 만약 second가 59라면 minute에 1을 더해주고 second는 0이 된다. 
  //2. 이때, minute가 59라면 hour에 1을 더해주고  minite은 0이 된다. 
  //3. 이때, hour가 23이라면 은 0이 된다. 
  //3. 최종 문장 리턴한다. (백틱 사용)

  if(second === 59){

    //만약 분이 59분일 경우
    if(minute === 59){

      minute = 0;
      second = 0;

      //분이 59분이고 hour도 23시일 경우 
      if(hour === 23){
        hour = 0;
        return `1초 뒤에 ${hour}${minute}${second}초 입니다`
      }
      else {
        //hour은 23시가 아닐 경우 
        hour += 1;
        return `1초 뒤에 ${hour}${minute}${second}초 입니다`
      }
    }
    else{
      //second가 59초인데 minute은 59분이 아닐 경우  
      second = 0;
      minute += 1;
      return `1초 뒤에 ${hour}${minute}${second}초 입니다`
    }
  }
  else {
    //second가 59초가 아닐 경우 
    second += 1;
    return `1초 뒤에 ${hour}${minute}${second}초 입니다`
  }
}

💫Reference

function addOneSecond(hour, minute, second) {
  if (second === 59) {
    minute += 1;
    second = 0;
  } else {
    second += 1;
  }

  if (minute === 60) {
    hour += 1;
    minute = 0;
  }

  if (hour === 24) {
    hour = 0;
  }

  return '1초 뒤에 ' + hour + '시 ' + minute + '분 ' + second + '초 입니다';
}

반복적으로 출력되는 문장은 한 줄만 적도록 해 보자!

profile
목표는 "함께 일하고 싶은, 함께 일해서 좋은" Front-end 개발자

0개의 댓글