조건문(switch) 코드공부

mini·2025년 4월 8일
0

switch 문은 여러 조건을 한 번에 비교하여 처리할 때 유용하게 사용
여러 if-else if 문을 사용하는 대신, switch 문을 사용하면 코드가 간결하고 읽기 쉽다.
switch 문은 특정 변수의 값에 따라 실행할 코드 블록을 선택

switch (expression) {
    case value1:
    // expression이 value1일 때 실행되는 코드
    break;
    case value2:
    // expression이 value2일 때 실행되는 코드
    break;
    case value3:
    // expression이 value3일 때 실행되는 코드
    break;
    default:
    // 위의 case들이 모두 맞지 않으면 실행되는 코드
}

expression: 비교할 값이 들어가는 부분 예를 들어, 숫자, 문자열, 또는 변수

1단계

숫자에 따른 요일 출력

let day = prompt("1~7 입력 ");  // 1~7중 입력
day = Number(day);  // 입력값을 숫자로 변환
switch (day) {
  case 1:
    console.log("월요일");
    break;
  case 2:
    console.log("화요일");
    break;
  case 3:
    console.log("수요일");
    break;
  case 4:
    console.log("목요일");
    break;
  case 5:
    console.log("금요일");
    break;
  case 6:
    console.log("토요일");
    break;
  case 7:
    console.log("일요일");
    break;
  default:
    console.log("1~7 중 입력");
}

1.5단계(응용)

숫자일때 문자 일떄 if문 써서 맞게 나오게

let day = prompt("1 ~ 7 또는 일 ~ 칠 입력");

let dayNum = Number(day); // day를 숫자로 변환

if (!isNaN(dayNum)) { // 숫자일 때 처리
    switch(dayNum) {
        case 1:
            console.log("월요일");
            break;
        case 2:
            console.log("화요일");
            break;
        case 3:
            console.log("수요일");
            break;
        case 4:
            console.log("목요일");
            break;
        case 5:
            console.log("금요일");
            break;
        case 6:
            console.log("토요일");
            break;
        case 7:
            console.log("일요일");
            break;
        default:
            console.log("1~7 중 입력");
    }
} else if (typeof day === 'string') { // 문자열일 때 처리
    switch (day) {
        case "일":
            console.log("월요일");
            break;
        case "이":
            console.log("화요일");
            break;
        case "삼":
            console.log("수요일");
            break;
        case "사":
            console.log("목요일");
            break;
        case "오":
            console.log("금요일");
            break;
        case "육":
            console.log("토요일");
            break;
        case "칠":
            console.log("일요일");
            break;
        default:
            console.log("일, 이, 삼, 사, 오, 육, 칠 중 입력");
    }
} else {
    alert("숫자(1~7) 또는 문자(일~칠)를 입력하세요.");
}

1.5단계(심화)

코드 단축 객체화시키기

let day = prompt("1 ~ 7 또는 일 ~ 칠 입력");

// 숫자와 문자에 대한 요일 매핑 객체
const daysOfWeek = {
1: "월요일",
2: "화요일",
3: "수요일",
4: "목요일",
5: "금요일",
6: "토요일",
7: "일요일",
일: "월요일",
이: "화요일",
삼: "수요일",
사: "목요일",
오: "금요일",
육: "토요일",
칠: "일요일"
};

let dayNum = Number(day);// 입력을 숫자로 변환

// 숫자일 때 처리
if (!isNaN(dayNum) && daysOfWeek[dayNum]) {
  console.log(daysOfWeek[dayNum]);
} 
// 문자일 때 처리
else if (daysOfWeek[day]) {
  console.log(daysOfWeek[day]);
} else {
  alert("숫자(1~7) 또는 문자(일~칠)를 입력하세요.");
}

2단계

점수에 맞는 학점

let score  = prompt("점수 입력");

switch (true) {
  case (score >= 101):
    console.log("100이하로");
    break;
  case (score >= 90):
    console.log("A 학점입니다.");
    break;
  case (score >= 80):
    console.log("B 학점입니다.");
    break;
  case (score >= 70):
    console.log("C 학점입니다.");
    break;
  default:
    console.log("F 학점입니다.");
}

3단계

이벤트 티켓 가격 계산기

티켓 종류 ("학생", "일반인", "노인", "어린이")
학생: 10,000원
일반인: 20,000원
노인: 10,000원
어린이: 5,000원

회원 유형 ("단체", "VIP", "일반")
단체(10명 이상): 50% 할인
VIP: 30% 할인
일반: 할인 없음

let ticket  = prompt("학생, 일반, 노인, 어린이"); // 1차 종류 입력
let counter  = prompt("단체, VIP, 일반"); // 2차 유형 입력

let basePrice //기본 가격 설정

switch(ticket){ //1차 종류에 대한 처리
    case "학생":
        basePrice = 10000;
    break;
    case "일반":
        basePrice = 20000;
    break;
    case "노인":
        basePrice = 10000;
    break;
    case "어린이":
        basePrice = 5000;
    break;
    default:
        console.log("잘못된 티켓");
    break;
}

let final = basePrice; 1차에 대한 결과값에 유형 추가를 위한 처리

switch(counter){ //2차 유형에 대한 처리
    case "단체":
    final = basePrice * 0.5; 
    break;
    case "VIP":
    final = basePrice * 0.7;
    break;
    case "일반":
		// 일반은 기본 가격 그대로
    break;
    default:
        console.log("잘못된 회원");
    break;
}

// basePrice 값이 맞게 들어왔으면 실행하게
if(basePrice) {
    console.log(`최종가격은 : ${final}원`);
}

예시1)
티켓 종류: 어린이
회원 유형: 단체

최종 가격: 2500원 (5,000원에서 50% 할인)


예시2)
티켓 종류: 학생
회원 유형: 일반

최종 가격: 10000원


profile
할 수 있다!

0개의 댓글