๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ๏ธ Today I Learned(TIL)/์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ_Day 10

by carrot0911 2024. 11. 20.

์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€๐Ÿง

์˜ค์ „

  • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… & README ํŒŒ์ผ ์ž‘์„ฑ
  • ๊ณ„์‚ฐ๊ธฐ ๊ณผ์ œ ์ œ์ถœํ•˜๊ธฐ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ(SQL, Java) 1๋ฌธ์ œ ํ’€์ด

์˜คํ›„

  • ๊ณ„์‚ฐ๊ธฐ ๊ณผ์ œ ํ•ด์„ค ์„ธ์…˜ ๋“ฃ๊ธฐ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ
  • Java ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜_4์ฃผ์ฐจ ์ˆ™์ œ ๋„์ „..!!
  • TIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ

 

์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌโœ๏ธ

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… & README ํŒŒ์ผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๋‚ด๊ฐ€ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์„ ์ž‘์„ฑํ•œ ์ˆœ์„œ
    • ๋ฌธ์ œ ์ƒํ™ฉ - ๋ฌธ์ œ ์›์ธ - ๋ฌธ์ œ ์ƒํ™ฉ ์ฝ”๋“œ - ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• - ๊ฒฐ๋ก 
  • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์„ ์ ์œผ๋ฉด์„œ '๊ทธ๋•Œ ๊ทธ๋•Œ ๋ง‰ํžˆ๊ฑฐ๋‚˜ ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„์„ ์ž˜ ๋ฉ”๋ชจํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ€์ ธ์•ผ๊ฒ ๋‹ค'๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.
    ์–ด๋Š์ •๋„ ์ ์–ด๋†จ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋ง‰์ƒ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ๊นŒ ๊ธฐ์–ต์ด ์ž˜ ๋‚˜์ง€ ์•Š์•˜๋‹ค... ๊ทธ๋•Œ ๋‹น์‹œ์˜ ๋‚˜์˜ ๊ณ ๋ฏผ, ์ƒ๊ฐ๋“ค์„ ์ ์–ด๋†“์œผ๋ฉด ๋‚˜์ค‘์— ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์„ ์ž‘์„ฑํ•  ๋•Œ ํŽธํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.
  • README ํŒŒ์ผ์€ GPT์˜ ๋„์›€๊ณผ ํŒ€์›๋ถ„์ด ๊ณต์œ ํ•ด์ฃผ์‹  ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ์ž‘์„ฑํ–ˆ๋‹ค!
    • https://www.easy-me.com/d → ์ž‘์„ฑํ•œ README ํŒŒ์ผ์„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ•  ์ˆ˜ ์žˆ๋‹ค!

๊ณ„์‚ฐ๊ธฐ ๊ณผ์ œ ํ•ด์„ค ์„ธ์…˜์„ ๋“ค์œผ๋ฉด์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ƒ๊ฐ์„ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค..

  • ํŠœํ„ฐ๋‹˜์€ ์ฝ”๋”ฉ์˜ ์‹ ์ด๋‹ค...
    ํŠœํ„ฐ๋‹˜์ด ์ž‘์„ฑํ•˜์‹  ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ๊ฐํƒ„๋งŒ ํ–ˆ๋˜ ๊ฑฐ ๊ฐ™๋‹ค.. Lv3์—์„œ ์‹ฌํ™” ์ฝ”๋“œ๋กœ ๋“ค์–ด๊ฐ€๋Š” ์ˆœ๊ฐ„ ๋‚˜๋Š” ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์ด์—ฌ์„œ ๋„‹ ๋†“๊ณ  ๋ณผ ์ˆ˜๋ฐ–์— ์—†์—ˆ์ง€๋งŒ ๋ญ”๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค, ํด๋ž˜์Šค๋“ค๋ผ ์—ฐ๊ฒฐ๋˜์–ด์„œ ๊ธฐ๋Šฅ๋“ค์ด ์‰ฝ๊ฒŒ์‰ฝ๊ฒŒ ๊ตฌํ˜„๋œ ๋Š๋‚Œ์ด์—ˆ๋‹ค.
  • ๋‚ด๊ฐ€ ๊ณผ์ œ๋ฅผ ๊ทธ๋ž˜๋„ ์ž˜ ํ•ด๊ฒฐํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ๋ฟŒ๋“ฏํ–ˆ๋‹ค.
    ํŠœํ„ฐ๋‹˜์ด ์ง„ํ–‰ํ•˜์‹  ๋ฐฉํ–ฅ๊ณผ ๋‚ด๊ฐ€ ์ง„ํ–‰ํ•œ ๋ฐฉํ–ฅ์ด ๋น„์Šทํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.. ๋‚ด ๋Š๋‚Œ๋งŒ ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ๋‹ค(?)

Java ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜_4์ฃผ์ฐจ ์ˆ™์ œํ•˜๋ฉด์„œ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ

  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด์„œ ์–ด๋Š์ •๋„ ๊ฐ์„ ์ตํžŒ ๋Š๋‚Œ์ด์ด๋‹ค.
  • ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ return this๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค..
    ๋‚ด๊ฐ€ ์ด๊ฑฐ๋•Œ๋งค ์—„์ฒญ ํ—ค๋งค๊ณ  ์žˆ์—ˆ๋Š”๋ฐ.... this ์ € 4๊ธ€์ž ํ•˜๋‚˜๋กœ ํ•ด๊ฒฐ๋๋‹ค... ๐Ÿซ ๐Ÿซ 
  • ๋ฌธ์ž์—ด์„ int ํƒ€์ž…์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•๋„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.
    Integer.parseInt(๋ฌธ์ž์—ด)์„ ํ†ตํ•ด์„œ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์—ˆ๋‹ค..!!
  • ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ž˜ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค!!
  • ์ˆ™์ œ ํ•ด๊ฒฐํ•œ ๊ฒŒ ๋ฟŒ๋“ฏํ•˜๋‹ˆ๊นŒ ๋ฐ‘์— ์ฝ”๋“œ๋กœ ๋‚จ๊ฒจ๋†”์•ผ๊ฒ ๋‹ค!!! ๊ฐ€์žฅ ์ค‘์š”ํ•œ Parser ํด๋ž˜์Šค๋งŒ ์ ์–ด๋†”์•ผ์ง€ ๐Ÿ˜ƒ๐Ÿ˜ƒ
๋”๋ณด๊ธฐ
package week04.homework4;

import java.util.regex.Pattern;

public class Parser {

    // 1. ์†์„ฑ (๋ณ€์ˆ˜)
    //๋ฌธ์ž์—ด์ด ์‚ฌ์น™์—ฐ์‚ฐ ๊ธฐํ˜ธ ์ค‘ ํ•˜๋‚˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ
    private static final String OPERATION_REG = "[+\\-*/]";
    // ๋ฌธ์ž์—ด์ด ์ˆซ์ž๋งŒ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ
    private static final String NUMBER_REG = "^[0-9]*$";

    // calculator ์ธ์Šคํ„ด์Šคํ™”
    private final Calculator calculator = new Calculator();

    // 2. ์ƒ์„ฑ์ž (์กฐ๋ฆฝ์„ค๋ช…์„œ)


    // 3. ๊ธฐ๋Šฅ (๋ฉ”์„œ๋“œ)
    // ํƒ€์ž…์ด Parser๋‹ˆ๊นŒ Parser๋กœ return..? Parser๋กœ ์–ด๋–ป๊ฒŒ returnํ•˜์ง€....
    public Parser parseFirstNum(String firstInput) throws BadInputException{
        // firstInput์ด NUMBER_REG์— ํฌํ•จ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‹คํ–‰ (์ •์ˆ˜๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ)
        if (!Pattern.matches(NUMBER_REG, firstInput)) { // ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์ด ๋ฌธ์ž์—ด ์ •์ˆ˜๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ
            // BadInputException์— ์žˆ๋Š” ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
            throw new BadInputException("์ •์ˆ˜");  // ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ, ์‹ค์ œ๋กœ ์˜ˆ์™ธ ๊ฐ์ฒด๋ฅผ ๋˜์ง„๋‹ค.
        }

        // ๋ฌธ์ž์—ด๋กœ ์ž…๋ ฅ ๋ฐ›์€ ์ˆซ์ž๋ฅผ intํ˜•์œผ๋กœ ๋ณ€๊ฒฝ
        int firstNumber = Integer.parseInt(firstInput);
        // setFirstNumber ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ firstNumber๋กœ ์„ค์ •
        calculator.setFirstNumber(firstNumber);

        // ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. (Parser ๊ฐ์ฒด)
        return this;
    }

    public Parser parseSecondNum (String secondInput) throws BadInputException{
        // secondInput์ด NUMBER_REG์— ํฌํ•จ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‹คํ–‰ (์ •์ˆ˜๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ)
        if (!Pattern.matches(NUMBER_REG, secondInput)) {
            // BadInputException์— ์žˆ๋Š” ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
            throw new BadInputException("์ •์ˆ˜");  // ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ, ์‹ค์ œ๋กœ ์˜ˆ์™ธ ๊ฐ์ฒด๋ฅผ ๋˜์ง„๋‹ค.
        }
        // ๋ฌธ์ž์—ด๋กœ ์ž…๋ ฅ ๋ฐ›์€ ์ˆซ์ž๋ฅผ intํ˜•์œผ๋กœ ๋ณ€๊ฒฝ
        int secondNumber = Integer.parseInt(secondInput);
        // setFirstNumber ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ secondNumber๋กœ ์„ค์ •
        calculator.setSecondNumber(secondNumber);

        // ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. (Parser ๊ฐ์ฒด)
        return this;
    }

    public Parser parseOperator(String operationInput) throws BadInputException{
        // operationInput์ด OPERATION_REG์— ํฌํ•จ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‹คํ–‰ (์‚ฌ์น™์—ฐ์‚ฐ ๊ธฐํ˜ธ๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ)
        if (!Pattern.matches(OPERATION_REG, operationInput)) {
            // BadInputException์— ์žˆ๋Š” ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
            throw new BadInputException("์‚ฌ์น™์—ฐ์‚ฐ ๊ธฐํ˜ธ");  // ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ, ์‹ค์ œ๋กœ ์˜ˆ์™ธ ๊ฐ์ฒด๋ฅผ ๋˜์ง„๋‹ค.
        }

        // ์ž…๋ ฅ ๋ฐ›์€ ์—ฐ์‚ฐ ๊ธฐํ˜ธ์— ๋”ฐ๋ผ operation ์„ ํƒ...?
        switch (operationInput) {
            case "+" :
                calculator.setOperation(new AddOperation());
                break;
            case "-" :
                calculator.setOperation(new SubstractOperation());
                break;
            case "*" :
                calculator.setOperation(new MultiplyOperation());
                break;
            case "/" :
                calculator.setOperation(new DivideOperation());
                break;
        }

        // ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. (Parser ๊ฐ์ฒด)
        return this;
    }

    public double executeCalculator () {
        // calculator ๊ณ„์‚ฐ ์‹œ, firstNumber, secondNumber ๋ชจ๋‘ int ํƒ€์ž…์ด๋ฏ€๋กœ ํ˜•๋ณ€ํ™˜ ํ•ด์ค˜์•ผํ•œ๋‹ค.
        return calculator.calculate();
    }
}

 

์˜ค๋Š˜ ํ•˜๋ฃจ ์ •๋ฆฌโœ๏ธ

๊ต์œก์„ ์‹œ์ž‘ํ•˜๊ณ  ์ฒ˜์Œ์œผ๋กœ ์ฃผ์–ด์กŒ๋˜ ๊ณ„์‚ฐ๊ธฐ ๊ณผ์ œ๋ฅผ ๋‚˜ ๋‚˜๋ฆ„๋Œ€๋กœ ์ž˜ ํ•ด๊ฒฐํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ฝ”๋“œ๋„ ๋ดค์ง€๋งŒ ๊ทธ๋ถ„๋“ค์˜ ์ฝ”๋“œ์™€ ๋‚˜์˜ ์ฝ”๋“œ์˜ ์ˆ˜์ค€ ์ฐจ์ด๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ํฐ ์š•์‹ฌ์„ ๋ถ€๋ฆฌ์ง€ ์•Š๊ณ  ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์„ ์—์„œ ๋‹ค ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด ์„ฑ๊ณตํ•œ ๊ณผ์ œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋‚ด์ผ ๋˜ ๋‹ค๋ฅธ ๊ณผ์ œ๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ ์—ด์‹ฌํžˆ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์„ ์—์„œ๋Š” ๋‹ค ๊ตฌํ˜„ํ•ด๋‚ด๊ณ  ๋ง๊ฒ ๋‹ค!! 

์˜ค๋Š˜ ์ „์— ๋“ค์–ด๋†จ๋˜ Java ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜ 4์ฃผ์ฐจ์˜ ์ˆ™์ œ๋ฅผ ๋“œ๋””์–ด ํ•ด๊ฒฐํ–ˆ๋‹ค!!!!!!!!
๊ทธ๋•Œ ๋‹น์‹œ์—๋Š” ํด๋ž˜์Šค๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๊ณ  ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ๋Š๋‚Œ๋„ ์ „ํ˜€ ๋ชฐ๋ž๋˜ ์ƒํƒœ๋ผ์„œ ์ˆ™์ œ ์„ค๋ช…์„ ์ฝ๋Š” ๋™์•ˆ ๋จธ๋ฆฌ์— ๋ฌผ์Œํ‘œ๊ฐ€ 1,000,000๊ฐœ ์ •๋„๋Š” ์ƒ๊ฒผ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ์˜ค๋Š˜์˜ ๋‚˜๋Š” ํด๋ž˜์Šค๋„ ์ดํ•ดํ•œ ์ƒํƒœ์ด๊ณ  ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ๊ฐœ๋…๋„ ์•„์ฃผ ์‚ด์ง์€ ์ž๋ฆฌ์žก๊ณ  ์žˆ์–ด์„œ ๊ฐ•์˜์—์„œ ์„ค๋ช…ํ•ด์ค€ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ์—ด์‹ฌํžˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค! ์—ด์‹ฌํžˆ ์ž‘์„ฑํ•˜๋˜ ๋„์ค‘ Parser ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์—์„œ ๋งˆ์ง€๋ง‰ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ๋ง‰ํ˜”๋‹ค...... ์•„๋ฌด๋ฆฌ ์ƒ๊ฐํ•ด๋„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„์ง€ ๋– ์˜ค๋ฅด์ง€ ์•Š์•˜๋‹ค...
๊ทธ๋ž˜์„œ ๋‚˜๋ณด๋‹ค ์ง„๋„๊ฐ€ ๋น ๋ฅธ ํŒ€์žฅ๋‹˜๊ป˜ ๋ฌผ์–ด๋ดค๊ณ  ์•„์ฃผ ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. return this....... ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ฉด ๋๋‚˜๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€๋˜ ๊ฒƒ์ด๋‹ค.. ์—ญ์‹œ ๊ณ ๋ฏผํ•ด๋„ ์•ˆํ’€๋ฆด ๋•Œ๋Š” ๋ฌผ์–ด๋ณด๋Š” ๊ฒƒ์ด ๋งž๋Š” ๊ฒƒ ๊ฐ™๋‹ค!!

๋‚ด์ผ๋ถ€ํ„ฐ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ณผ์ œ๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ๋‚˜์—๊ฒŒ๋Š” ์•„์ง 5์ฃผ์ฐจ ๊ฐ•์˜๋“ค์ด ๋‚จ์•„์žˆ๋‹ค!! ์ฐจ๊ทผ์ฐจ๊ทผ ํ•˜๋‚˜์”ฉ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๋ฉด์„œ ๊ณ„์† ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค.

๋‚ด์ผ ํ•˜๋ฃจ๋„ ํ™”์ดํŒ…!!!!!!!!!!!!!!!!!!

 

๋‚ด์ผ ๊ณ„ํšโฐ

์˜ค์ „

  • ์ƒˆ๋กœ์šด ๊ณผ์ œ ๋ฐœ์ œ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ(SQL, Java) 1๋ฌธ์ œ ํ’€์ด & ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ

์˜คํ›„

  • ์ƒˆ๋กœ์šด ๊ณผ์ œ ๋„์ „ ๐Ÿค”
  • TIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ