백준 9498 if문 사용

import java.util.Scanner;
class Main{
    public static void main(String args[]) {
    	Scanner sc = new Scanner(System.in);
        
    	int score = sc.nextInt();
    	
    	if (90<=score && score<=100) { // 이런 방식으로 작성하면 이해하기 편합니다.
        	System.out.println("A");
        } else if (80<=score && score<=89) {
          	System.out.println("B");
        } else if (70<=score && score<=79) {
          	System.out.println("C");
    	} else if (60<=score && score<=69) {
          	System.out.println("D");
    	} else {
          	System.out.println("F");
    	}
    	sc.close();
    }
}

백준 9498 switch문 사용 -1

import java.util.*;
class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int score = sc.nextInt();
        
        switch(score/10){
            case 9: case 10:
                System.out.println("A");
                break;
            case 8:
                System.out.println("B");
                break;
            case 7:
                System.out.println("C");
                break;
            case 6:
                System.out.println("D");
                break;
            default:
                System.out.println("F");
                break;
        }
    }
}

백준 9498 switch문 사용 -2 

import java.util.*;
class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int score = sc.nextInt();
        char grade;
        
        switch(score/10){
            case 9: case 10:
                grade = 'A';
                break;
            case 8:
                grade = 'B';
                break;
            case 7:
                grade = 'C';
                break;
            case 6:
                grade = 'D';
                break;
            default:
                grade = 'F';
                break;
        }
        System.out.println(grade);
    }
}

++

백준 9498 switch문 사용 1, 2의 차이는 출력 횟수의 차이입니다.

 

변수는 타입이 다르다면 추가로 만들어서 사용해야 합니다.

 

이 문제는 두 가지를 아는지 묻는 문제라고 생각합니다.

  1. 비교 연산자
  2. 논리 연산자

그리고 추가적으로 switch문에 대해서도 알아보겠습니다.

1. 비교 연산자

기본 타입인 두 값을 비교해서 boolean 값(true, false)을 반환합니다.

 

보통 조건문(if), 반복문(for, while)에서 실행 흐름을 제어할 때 사용합니다.

 

종류로는 >, <, >=, <=, ==, !=가 있습니다.

 

우리가 자주 사용하는 '='은 대입 연산자로 취급되기 때문에 ==를 사용합니다.

 

왼쪽 항이 기준입니다.

 

ex) > : 왼쪽 항이 크면 참, 아니면 거짓을 반환합니다.

2. 논리 연산자

두 boolean 값을 비교하여 boolean 값을 반환합니다.

 

&&(논리곱) : 두 항이 모두 true인 경우에만 true를 반환합니다.

 

||(논리합) : 두 항 중 하나의 항이 true이면 true를 반환합니다.

 

!(부정) : 단항 연산자로 true은 false으로, false은 true로 반환합니다.

 

++

&& 사용 시 두 항 중 첫번째 항이 false라면 두 번째 항은 평가하지 않고 바로 false를 반환합니다.

switch-case문

 

조건식이 아니라 변수가 어떤 값을 갖느냐에 따라 실행문이 실행됩니다.

 

if문은 boolean 값만 사용할 수 있기 때문에 경우의 수가 많을 경우 else if문을 대량으로 추가해야 합니다.

 

하지만 switch문은 변수의 값에 따라 실행문이 결정되기 때문에 더 간결합니다.

 

그리고 break문을 반드시 작성해야 합니다.

 

break문을 작성을 안하면 모든 실행문이 실행됩니다.

 

각 조건을 case로 표시하고 마지막은 default로 작성합니다.

 

++

추가적으로 if문과 switch문은 서로 교환이 가능합니다.

if문 switch문
if(조건식1) { 실행문 A; } switch(변수) { case 값1 : 실행문 A; break;
else if(조건식2) { 실행문 B; } case 값2 : 실행문B; break;
else { 실행문 C; } default : 실행문C; }