[STUDY] 231129 | Java | 조건문(If)

Nimgnos·2023년 12월 3일
0

👾 STUDY

목록 보기
8/40
post-thumbnail

📌 조건문(If)

  • if(조건식){실행할 문장} : 괄호 안의 조건이 참(true)인 경우 문장이 실행된다.(단일 if문) 문장은 하나의 실행문이 될 수도 있고, 여러 개의 실행문이 될 수도 있다.
  • if(조건식){문장1}else{문장2} : 조건에 따라 실행되어야하는 문장이 서로 다른 경우에 사용된다. 문장은 단일 문장일수도 있고, 복수 문장일수도 있다.
  • 다중 if(조건식1){문장1}else if(조건식2){문장2}else if(조건식n){문장n} : 비교할 조건식이 여러개인 경우에 사용된다. 두 가지 이상의 조건식을 가질 수 있고 각각의 조건에 맞는 블록을 수행한다.

📌 조건문(If) - 예제 풀기

문제 1.

  • 키보드로 두 정수를 입력받아, 두 정수의 합이 짝수면 참이라고 출력한다. 그렇지 않으면 거짓이라고 출력한다.
    • 풀이 및 결과
public class If_문제_1 {
    public static void main(String[] args){
        int num1, num2;
        Scanner sc = new Scanner(System.in);
        num1 = sc.nextInt();
        num2 = sc.nextInt();
        //두 정수의 합이 짝수라면 이라는 조건문
        //두 정수의 합을 2로 나누어 나머지가 0이면 짝수
        if((num1 + num2) % 2 == 0){
            System.out.println("참");
        }
        //else : 그렇지 않으면(if문과 짝지)
        else{
            System.out.println("거짓");
        }
    }
}

문제 2.

  • 키보드로 입력받은 정수가 양수면 '양수'라고 출력, 음수라면 '음수' 출력한다. 0이라면 '0'으로 출력한다.
    • 풀이 및 결과
public class If_2 {
    public static void main(String[] args){
        //키보드로 입력받은 정수가 양수면 '양수'라고 출력
        //음수라면 '음수' 출력
        //0이라면 '0' 출력
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        if(num > 0){
            System.out.println("양수");
        }
        //else if: 그렇지 않고 만약에
        // if는 1번만 사용가능하지만 else if는 여러번 사용가능
        else if (num < 0) {
            System.out.println("음수");
        }
        else{
            System.out.println("0");
        }
    }
}

문제 3.

  • 키보드로 하나의 정수를 입력받아 입력받은 수가 3의 배수 이면서 5의 배수라면 '참'을 출력, 그렇지 않으면 '거짓'을 출력한다.
    • 풀이 및 결과
public class If_문제_2 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        if(num % 3 == 0 && num % 5 == 0){
            System.out.println("참");
        }
        else{
            System.out.println("거짓");
        }
    }
}

문제 4.

  • 키보드로 두 수를 입력받아 두 수 중 큰 수를 출력하고, 만약 입력받은 두 수가 같다면 '두 수는 같습니다'를 출력
    • 풀이 및 결과
public class If_문제_3 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        if (num1 > num2){
            System.out.println(num1);
        }
        else if (num1 < num2) {
            System.out.println(num2);
        }
        else if (num1 == num2) {
            System.out.println("두 수는 같습니다.");
        }
    }
}

문제 5.

  • 키보드로 두 수를 입력받아 두 수 중 큰 수부터 출력한다. 단, 입력받은 두 수는 같은 수는 없다고 가정한다.
    • 내 풀이
public class If_문제_4 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        if(num1 > num2){
            System.out.println(num1 + ", " + num2);
        }
        else {
            System.out.println(num2 + ", " + num1);
        }
    }
}
  • 풀이 및 결과
public class If_문제_4해석 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int max;
        int min;
        if(num1 > num2){
            max = num1;
            min = num2;
        }
        else {
            max = num2;
            min = num1;
        }
        System.out.println(max + ", " + min);
    }
}
  • ➡️ max, min을 사용하니까 훨씬 간결하고 코드의 중복이 없다!

문제 6.

  • 키보드로 세 정수를 입력받아, 입력받은 세 수를 크기가 큰 순서대로 출력한다. 단, 입력받은 세 수는 같은 수는 없다고 가정한다.
    • 풀이 및 결과
public class If_문제_5 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int num3 = sc.nextInt();
        //if(num1 > num2 > num3){
        if(num1 > num2  && num2 > num3){
            System.out.println(num1 + ", " + num2 + ", " + num3);
        }
        else if(num1 > num3 && num3 > num2){
            System.out.println(num1 + ", " + num3 + ", " + num2);
        }
        else if(num2 > num1 && num1 > num3) {
            System.out.println(num2 + ", " + num1 + ", " + num3);
        }
        else if(num2 > num3 && num3 > num1) {
            System.out.println(num2 + ", " + num3 + ", " + num1);
        }
        else if(num3 > num1 && num1 > num2) {
            System.out.println(num3 + ", " + num1 + ", " + num2);
        }
        else if(num3 > num2 && num2 > num1) {
            System.out.println(num3 + ", " + num2 + ", " + num1);
        }
    }
}

문제 7.

  • 정수형 변수 하나를 선언하고 0 ~ 100까지의(0,100 포함) 숫자 중 임의의 값으로 초기화한다. 그 후 변수의 값이 90보다 크고 100보다 작거나 같으면 ‘학점은 A입니다.’를 출력하고, 80보다 크고 90보다 작거나 같으면 ‘학점은 B입니다.’를 출력, 80점 이하라면 ‘학점은 C입니다.’를 출력한다.
    • 내 풀이
public class If_문제_6 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num = 85;
        if(num >= 90 && num <= 100){
            System.out.print("학점은 A입니다.");
        }
        else if(num >= 80){
            System.out.println("학점은 B입니다.");
        }
        else if(num < 80){
            System.out.println("학점은 C입니다.");
        }
    }
}
  • 풀이 및 결과
public class If_문제_6 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num = 85; //double, boolean
        String grade = "";
        if(num >= 90 && num <= 100){
            grade = "A";
        }
        else if(num >= 80){
            grade = "B";
        }
        else if(num < 80){
            grade = "C";
        }
        System.out.println("학점은 " + grade + "입니다.");
    }
}

문제 8.

  • 369게임을 간단히 작성해보자. 1~99까지의 정수를 키보드로부터 입력받고, 정수에 3, 6, 9 중 하나가 있는 경우는 "박수짝"을 출력한다. 두 개 있는 경우는 "박수짝짝"을 출력하는 프로그램을 작성하라. 예를 들면, 키보드로 입력된 수가 13인 경우 "박수짝"을, 36인 경우 "박수짝짝"을 출력한다.
  • 힌트
    • 36%->6, 91/10->9, 6/10->0
      1. 박수의 개수를 저장할 변수 생성 및 0으로 초기화
      1. 입력받은 숫자를 십의자리 숫자와 일의 자리 숫자로 분리
    • 십의 자리: 입력받은 수를 10으로 나눈 몫
    • 일의 자리: 입력받은 수를 10으로 나눈 나머지
      1. 십의 자리가 3, 6, 9인지 파악->변수+1
      1. 일의 자리가 3, 6, 9인지 파악->변수+1
      1. 변수의 값이 0이면 박수없음, 변수의 값이 1이면 박수짝, 변수의 값이 2면 박수짝짝
  • 풀이 및 결과
public class If_문제_8 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int cnt = 0; //박수의 개수를 저장할 변수
        System.out.println("1~99 사이의 정수를 입력하세요.");
        int num =sc.nextInt();
        //십의 자리 숫자와 일의 자리 숫자 분리
        int tens = num /10;
        int ones = num % 10;
        //십의 자리 숫자와 일의 자리 숫자가 각각 3,6,9인지 확인
        if (tens == 3 || tens == 6 || tens == 9){
            cnt = cnt + 1;
        }
        if (ones == 3 || ones == 6 || ones == 9){
            cnt = cnt + 1;
        }
        //박수
        if(cnt == 1){
            System.out.println("박수 짝");
        } else if (cnt == 2) {
            System.out.println("박수 짝짝");
        }
    }
}

🍀회고

  • 전날 Java의 기초를 배우면서 어렵지만 오 나름...? 이라고 생각했던 어제의 나.. 크게 반성합니다.🥲 단일 조건문은 그럭저럭 되는데 else...ㅋ 문제 이해가 느리니까 당연히 손도 너무 느리다. 속성으로 많은 문제를 풀면서 앞에서 풀었던 예제의 풀이들을 계속 참고하고 있는데 아직 완벽히 이해가 되지는 않는다. 연습이 아주 많이 필요할 것 같다.
profile
먹고 기도하고 코딩하라

0개의 댓글