switch문

하리보좋아·2023년 8월 2일
0

switch

if/else문 대신 사용할 수 있다.
if/else 문은 논리적 참, 거짓으로 실행할 코드 블록을 결정한다.
하지만 switch 문은 논리적 참, 거짓보다는 다양한 상황(case)에 따라 실행할 코드 블록을 결정할 때 사용한다.

switch (표현식) {
  case 표현식1:
    switch 문의 표현식과 표현식1이 일치하면 실행될 문;
    break; - 코드 블록에서 탈출하는 역할
  case 표현식2:
    switch 문의 표현식과 표현식2이 일치하면 실행될 문;
    break;
  default:
    switch 문의 표현식과 일치하는 case문이 없을 때 실행될 문;
    break;
}

문제

두 개의 숫자와 연산자를 입력받아 해당하는 계산 결과를 반환하는 계산기 함수를 작성하세요.

조건

num1과 num2는 숫자입니다.
operator는 문자열로, +, -, *, / 중 하나입니다.
operator가 위의 네 가지 연산자 중 하나가 아닌 경우에는 "유효하지 않은 연산자"를 반환합니다.
operator에 따라 적절한 계산을 수행하여 결과를 반환합니다.

function test(num1, num2, operator) {
  let result;
  switch(operator) {
    case '+':
      result = num1 + num2;
      break;
      case '-':
      result = num1 - num2;
      break;
      case '*':
      result = num1 * num2;
      break;
      case '/':
      result = num1 / num2;
      break;
    default: '유효하지 않은 연산자';
      break;
  }
  return result;
}
console.log(test(3,6,'-')); /-3/

문제

주차비 계산기 함수 작성하기 (주차 시간에 따른 주차비를 계산하기)

조건

차량의 주차 시간 (단위: 시간)
기본 주차 요금 (주차 시간이 1시간 이하일 때의 요금) - 1000원 (시간의 숫자만 생각)
1시간을 초과하면 추가 주차 시간 당 요금 - 500원

function parkingPay(parkingTime) {
  let totalPay;
  let basePay = 1000
  let addPay = 500

  switch (parkingTime) {
    case 1:
      totalPay = basePay;
      break;
    default:
      totalPay= basePay + ((parkingTime - 1) * addPay);
      break;
  }
  return totalPay;
}
console.log(parkingPay(3));

문제

등급별 할인율 적용하기

조건

구매한 상품의 금액 및 회원등급에 따른 할인율이 적용된 가격을 출력
회원 등급 : "일반", "실버", "골드", "플래티넘", "다이아"
할인율: 일반 - 할인없음, 실버 - 5%, 골드 - 10%, 플래티넘 - 15%, 다이아 - 20%

function totalPay(productAmount, rate) {
  let discountPrice;

  switch (rate) {
    case '실버':
      discountPrice = productAmount * 0.95;
      break;
      case '골드':
      discountPrice = productAmount * 0.9;
      break;
      case '플레티넘':
      discountPrice = productAmount * 0.85;
      break;
      case '다이아':
      discountPrice = productAmount * 0.8;
      break;
    default:
      discountPrice = productAmount;
      break;
  }
  return discountPrice;
}
console.log(totalPay(10000, '실버'));
console.log(totalPay(10000, '골드'));
console.log(totalPay(10000, '플레티넘'));
console.log(totalPay(10000, '다이아'));
console.log(totalPay(10000, '일반'));

2개의 댓글

comment-user-thumbnail
2023년 8월 2일

좋은 글이네요. 공유해주셔서 감사합니다.

1개의 답글