[항해99] Pre-onboarding 4일차

kyuu·2022년 11월 10일
0

항해99

목록 보기
9/19
post-thumbnail

항해99 Pre-onboarding 1주차 항해일지 <4day - TIL>

📍Today I Learn(Day 4 - Chapter 4)

배운 것 :

  • 조건문 ( if, switch, else if )
  • 반복문 ( for, for each )

조건문이란?

📌 조건식에 따라 다른 실행문을 실행하기 위해 사용됨

  • if문은 조건식의 결과가 true, false이냐에 따라, switch문은 변수의 값에 따라 실행문이 결정됨

(1.1) if문

  • 조건식이 true면 블록을 실행, flase면 블록을 실행하지 않음
<예제코드 - 성적에 해당하는 등급 출력하기>
import java.util.Scanner;

public class Self_coding_4_1 {
    public static void main (String[] args){
        System.out.print(" 당신의 점수를 입력하세요 : ");
        Scanner scanner = new Scanner(System.in);
        String score = scanner.nextLine();
        int num = Integer.parseInt(score);

        String grade = "";

    if ( num >= 90) {
        System.out.println("점수가 90보다 큽니다.");
        grade = "A";
    }

    if ( num <= 90){
        System.out.println("점수가 90보다 작습니다.");
        grade = "B";
    }
        System.out.println("등급은 : " + grade + " 입니다.");
    }
}

//if문만을 이용한 성적 출력하기코드, 원 코드에서는 점수 변수로 선언해놓지만 scanner문을 통해서 입력받은 점수에 대한 성적을 출력하도록 작성했음

(1.2) if-else문

  • if-else는 조건식에 결과에 따라 실행 블록을 선택한다.
    ex ) True면 If문의 블록을, False면 else문의 블록을 실행함
  • 위의 코드를 if-else문으로 바꾸면 아래와 같다.
import java.util.Scanner;

public class Self_coding_4_1 {
    public static void main (String[] args){
        System.out.print(" 당신의 점수를 입력하세요 : ");
        Scanner scanner = new Scanner(System.in);
        String score = scanner.nextLine();
        int num = Integer.parseInt(score);

        String grade = "";

    if ( num >= 90) {
        System.out.println("점수가 90보다 큽니다.");
        grade = "A";
    } else {
        System.out.println("점수가 90보다 작습니다.");
        grade = "B";
    }
        System.out.println("등급은 : " + grade + " 입니다.");
    }
}

(1.3) if-else if-else문

  • 조건문이 여러개인 if문을 뜻함, else if문의 수는 제한이 없고 여러개의 조건식 중 True가 되는 블록만 실행하고 전체 if문을 벗어나게 됨
  • 위의코드를 else-if문으로 바꾸면 아래와 같다.
import java.util.Scanner;

public class Self_coding_4_1 {
    public static void main (String[] args){
        System.out.print(" 당신의 점수를 입력하세요 : ");
        Scanner scanner = new Scanner(System.in);
        String score = scanner.nextLine();
        int num = Integer.parseInt(score);

        String grade = "";

    if ( num >= 90) {
        System.out.println("점수가 90보다 큽니다.");
        grade = "A";
    } else if ( num >= 80 ){
        System.out.println("점수가 80보다 작습니다.");
        grade = "B";
    } else if ( num >= 70 ){
        System.out.println("점수가 70보다 작습니다.");
        grade = "C";
    }  else {
        System.out.println("점수가 70보다 작습니다.");
        grade = "D";
    }
        System.out.println("등급은 : " + grade + " 입니다.");
    }
}

🔥 주사위 굴리기 프로그램 작성을 위한 Math.random() 메소드 알아보기

  • Math.random() 함수는 double 형으로 0.0이상 1.0 미만 사이의 값을 반환하는 함수로, 난수를 만들고 싶을때 자주 이용되는 함수이다.
    ( * . 난수란 무작위로 만들어진 수열을 말함)
  • 해당 함수는 0.xxxx ~ 0.9xxx 까지의 값을 반환한다.
  • 정수형 난수를 뽑아내려면 랜덤함수는 기본형이 Double이기 때문에 (int)로 정수화 시켜주어야함
    (ex) int num = (int) (Math.random() * n) + start;
  • 1부터 ~ 9까지의 값을 뽑고싶다면 0부터 나오기때문에 +1이 필요

(1.4) 랜덤함수를 및 else-if문을 이용한 주사위 뽑기

public class Self_coding_4_2 {
    public static void main(String[] args) {
        int num = (int) (Math.random() * 6) + 1;
        // 로또 번호 뽑기를 하려면 *45를 하면 된다!

        if (num == 1) {
            System.out.println("1번을 뽑았습니다.");
        } else if (num == 2) {
            System.out.println("2번을 뽑았습니다.");
        } else if (num == 3) {
            System.out.println("3번을 뽑았습니다.");
        } else if (num == 4) {
            System.out.println("4번을 뽑았습니다.");
        } else if (num == 5) {
            System.out.println("5번을 뽑았습니다.");
        } else {
            System.out.println("6번을 뽑았습니다.");
        }
    }
}

(1.5) Switch문

  • switch문은 변수가 어떤값을 갖느냐에 따라 실행문이 선택
  • 주사위 뽑기를 Switch문으로 바꾸면 아래와 같다.
public class Self_coding_4_3 {
    public static void main(String[] args) {
        int num = (int) (Math.random() * 6) + 1;
        // 로또 번호 뽑기를 하려면 *45를 하면 된다!

        switch (num){
            case 1:
                System.out.println("1번");
                break;
            case 2:
                System.out.println("2번");
                break;
            case 3:
                System.out.println("3번");
                break;
            case 4:
                System.out.println("4번");
                break;
            case 5:
                System.out.println("5번");
                break;
            case 6:
                System.out.println("6번");
                break;
        }
    }
}

반복문이란?

📌 어떤 작업이 반복적으로 실행되도록 할 때 사용됨

  • for문은 반복 횟수를 알고있을 때, while문은 조건에 따라 반복할 때 사용
    *) while과 do-while의 차이는 조건을 먼저 검사하느냐, 나중에 검사하느냐의 차이

(2.1) For문

  • for문은 주어진 횟수만큼 실행ㄴ문을 반복 실행할 때 적합한 반복 제어문
#1부터 100까지의 합 더하기
public class Self_coding_4_4 {
    public static void main(String[] args){
        int sum = 0;

        for (int i = 1 ; i <= 100; i ++){
            sum += i;
        }
        System.out.println("1부터 100까지의 합은:" + sum);
    }
}

(2.2) 중첩 for문

  • for문은 다른 for문을 내포할 수 있는데, 이것을 중첩 for문이라고 함
#중첩 for문을 통한 구구단 만들기 

public class Self_coding_4_5 {
    public static void main(String[] args){
        for (int i=1; i<=9; i++){
            System.out.println(" **** " + i + "단 ****");
            for (int j=1; j<=9; j++){
                int sum = i * j ;
                System.out.println(i + "x" + j + "=" + sum );
            }
        }
        System.out.println("**** 구구단 끝! ****");
    }
}

(2.3) while문

  • while문은 조건식이 true일 경우 계속해서 반복
#while문을 통한 1부터 100까지 더하기 

public class Self_coding_4_6 {
    public static void main(String[] args){
        int i = 1;
        int sum = 0;

        while ( i <=100 ){
            sum += i;
            i ++;
        }
        System.out.println("1에서 100까지의 합은 :" + sum );
    }
}

(2.4) do-while문

  • do-while문은 블록 내부의 실행문을 우선 실행하고, 실행 결과에 따라서 반복 실행을 계속할지 결정함
# 위 while문을 do-while형태로 바꾸면 아래와 같당 

public class Self_coding_4_6 {
    public static void main(String[] args){
        int i = 1;
        int sum = 0;

        do {
            sum += i;
            i ++;
        }

        while ( i <=100 );

        System.out.println("1에서 100까지의 합은 :" + sum );
    }
}

(2.5) break/continue문

  • break는 while, do-while문의 실행을 중지할 때 사용
  • continue문은 for, while, do-while에서만 사용되는데 continue문이 실행되면 for문의 증감식, while/do-while의 조건식으로 이동함
#continue문 예시
public class Self_coding_4_7 {
    public static void main(String[] args){

        for (int i = 1; i <= 10; i++){
            if ( i % 2 != 1){
                continue;
            }
            System.out.println(i);
        }
    }
}

[ 연습문제 풀이 ✏️ ]

1️⃣ while, Math.random()메소드를 이용하여 2개의 주사위를 던졌을 때 나오는 눈을 출력하고 눈의 합이 5가 아니면 계속, 눈의 합이 5이면 실행을 멈추는 코드를 작성하기

public class exam_coding_4_1 {
    public static void main(String[] args){
        while(true){
            int x = (int) (Math.random() * 6) + 1;
            int y = (int) (Math.random() * 6) + 1;
            int sum = 0;

            sum = x+y;
            System.out.println("두 수의 합은 : " + x + "+" + y  + "=" + sum + "입니다." );

            if ( sum == 5 ){
                break;
            }
        }
    }
}

2️⃣ 중첩 for문을 이용하여 방정식 4x + 5y = 60의 모든 해를 구해서 (x,y)형태로 출력

public class exam_coding_4_2 {
    public static void main(String[] args){

        for ( int i=1; i <=10; i++){
            for (int j=0; j<=10; j++){
                int sum = (4 * i) + (5 * j);
                if ( sum == 60) {
                    System.out.println("x : " + i + " y : "+ j);
                }
            }
        }
    }
}

3️⃣ 죽음의 별찍기 (아래 그림처럼 찍으면 됨 )

  • 별찍기는 식은죽 먹기였는데 다시 하니까 헷갈려 죽었다
public class exam_coding_4_4 {
    public static void main(String[] args){

        for (int i=1; i<=5; i++){
            for (int j=1; j <= i; j++){
                System.out.print("*");
                } System.out.println("");
            }
        }
    }

4️⃣ ATM기 만들기

import java.util.Scanner;

public class exam_coding_4_5 {
    public static void main(String[] args) {
        boolean run = true;
        int balance = 0;
        Scanner scanner = new Scanner(System.in);

        while (run) {
            System.out.println("==============================");
            System.out.println("1. 예금 | 2. 출금 | 3.잔고 | 4. 종료");
            System.out.println("==============================");
            System.out.print("선택:");

            int menuNum = Integer.parseInt(scanner.nextLine());

            switch (menuNum) {
                case 1:
                    System.out.println("예금액 : ");
                    balance += Integer.parseInt(scanner.nextLine());
                    break;

                case 2:
                    System.out.println("출금액 : ");
                    int outpay = Integer.parseInt(scanner.nextLine());

                    if (outpay > balance) {
                        System.out.println("출금액이 부족합니다.");
                        break;
                    }
                    balance -= outpay;
                    break;
                case 3:
                    System.out.println("잔고 : " + balance);
                    break;

                case 4:
                    System.out.println("종료합니다.");
                    break;

            }
        }
    }
}

문제에서 요구하는대로만 만들면 출금 요청액보다 잔액이 적어도 인출되는 현상이 있었다.(마이너스 통장처럼) 어림없지 잔액이 출금액보다 적을 경우 출금 불가 하도록 수정하였다.

알고리즘 오답노트/알게된사항💡

📌 코드업 - python 기초 100제 진행

  • 특정 문자열 제거
    • 새로운 변수명 = 변수명.replace('변경할문자(-)', '')
  • 10진수 -> 16진수로 출력하기
a = input()
n = int(a)
print('%x' % n)
// n 앞에 공백있음
  • n = int(a,16) // 16진수로 저장
  • n = ord(input()) // 입력받은 문자를 10진수 유니코드로 변환
profile
엔지니어 꿈틀 개발자

0개의 댓글

관련 채용 정보