์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[์šฐํ…Œ์ฝ” 5๊ธฐ] <4์ฃผ์ฐจ> 'java-bridge' ํšŒ๊ณ 

LEFT 2022. 12. 15. 13:51

<์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค 5๊ธฐ ํ”„๋ฆฌ์ฝ”์Šค ์ง„ํ–‰์‚ฌํ•ญ - 4์ฃผ์ฐจ>

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป๋งˆ์ง€๋ง‰ ์ฃผ์ฐจ์ธ 4์ฃผ์ฐจ์—์„œ๋Š” java-bridge๋ผ๋Š” ์ฃผ์ œ๋กœ ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค.

์ •์‹ ์—†์ด ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ ๋ฒŒ์จ 4์ฃผ์ฐจ๊ฐ€ ๋˜์–ด์žˆ์—ˆ๊ณ , ํ•œ๋‹ฌ ๊ฐ„ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ์‚ฌ์‹ค์ด ๋งŽ์•„์„œ ๋ฟŒ๋“ฏํ–ˆ๋‹ค.๐Ÿ’ก

<๋ฐฑ์—”๋“œ - Java> ๊ธฐ์ค€์œผ๋กœ ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์˜€๋‹ค.


<๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ>

  • ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ

- ์œ„์•„๋ž˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์นธ๋งŒ ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฆฌ๋ฅผ ๋๊นŒ์ง€ ๊ฑด๋„ˆ๊ฐ€๋Š” ๊ฒŒ์ž„์ด๋‹ค.

  • ์ž…์ถœ๋ ฅ ์š”๊ตฌ ์‚ฌํ•ญ

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์š”๊ตฌ ์‚ฌํ•ญ

๊ทธ ์™ธ๋กœ InputView ํด๋ž˜์Šค, OutputView ํด๋ž˜์Šค,

BridgeGame ํด๋ž˜์Šค, BridgeMaker ํด๋ž˜์Šค, BridgeRandomNumbergenerator ํด๋ž˜์Šค ๋˜ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค.

  • ๊ตฌํ˜„๊ณผ์ •

์ „ ์ฃผ์ฐจ์™€ ๊ฐ™์€ ์ œํ•œ์‚ฌํ•ญ์ด ์ฃผ์–ด์กŒ๊ณ , ์ด๋ฒˆ์—๋„ ํด๋ž˜์Šค์˜ ์„ธ๋ถ„ํ™”๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์•˜๋‹ค. 

๋‹ค๋งŒ ์ด๋ฒˆ์—๋Š” ์ถœ๋ ฅํ•˜๋Š” OutputView ๋ถ€๋ถ„์ด ๋งค์šฐ ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์ด๋™ํ•˜๋Š” ๋ถ€๋ถ„์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๊ณ , 

์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€๋Š” ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ถœ๋ ฅ๊ฐ’์„ ํ‘œ์‹œํ•ด์•ผ๋๊ธฐ ๋•Œ๋ฌธ์— ๋” ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™์•˜๋‹ค.


<Application.java>

package bridge;

public class Application {

    public static void main(String[] args) {
        // TODO: ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„
        final BridgeGame bridgeGame = BridgeGame.create();
        bridgeGame.move();

    }
}

- Application.java์—์„œ BridgeGame์„ ์ฐธ์กฐํ•˜์—ฌ move() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฒŒ์ž„์„ ์ง„ํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค.


<BridgeGame.java>

package bridge;

import java.util.List;

/**
 * ๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ ๊ฒŒ์ž„์„ ๊ด€๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค
 */
public class BridgeGame {

    static int bridge_size = InputView.readBridgeSize();
    static String final_result;
    static int final_count;
    static String map_move;

    BridgeGame(){

    }

    public static BridgeGame create(){
        return new BridgeGame();
    }

    /**
     * ์‚ฌ์šฉ์ž๊ฐ€ ์นธ์„ ์ด๋™ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ
     * <p>
     * ์ด๋™์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…(return type), ์ธ์ž(parameter)๋Š” ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
     */
    public void move() {
        String direction = InputView.readMoving();
        List<String> Bridge_path = BridgeMaker.makeBridge(bridge_size);
        int i = 0; int count = 0;
        while(i == (bridge_size*2)) { // ๋๊นŒ์ง€ ๋„๋‹ฌํ• ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
            if (direction == "U") { // "U"์„ ์ž…๋ ฅํ•˜์˜€๊ณ , ์ •๋‹ต์ด๋ฉด, ๋‹ค์Œ์นธ์œผ๋กœ
                if (Bridge_path.get(i) == direction) { i += 2; count++; map_print("O"); direction = InputView.readMoving();
                } else map_print("X"); retry();
            } else if (direction == "D") { // "D"๋ฅผ ์ž…๋ ฅํ•˜์˜€๊ณ , ์ •๋‹ต์ด๋ฉด, ๋‹ค์Œ์นธ์œผ๋กœ
                if (Bridge_path.get(i) == direction) { i += 2; count++; map_print("O"); direction = InputView.readMoving();
                } else map_print("X"); retry();
            }
        }
        if(i >= (bridge_size*2)) success("์„ฑ๊ณต", count);
    }
    public static void success(String result, int count){
        final_result = result;
        final_count = count;
    }
    public static void map_print(String is_success){
        map_move = is_success;
    }
    public static String map_move(){
        return map_move;
    }

    public static String endgame_1(){
        return final_result;
    }
    public static int endgame_2(){
        return final_count;
    }

    /**
     * ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์ž„์„ ๋‹ค์‹œ ์‹œ๋„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ
     * <p>
     * ์žฌ์‹œ์ž‘์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…(return type), ์ธ์ž(parameter)๋Š” ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
     */
    public void retry() {
        String game_choice = InputView.readGameCommand();
        boolean result = true; // ์„ฑ๊ณต
        if(game_choice == "R") create();
        else if(game_choice == "Q") success("์‹คํŒจ", final_count);
    }
}

- BridgeGame๋ถ€๋ถ„์ด ์ด ๊ณผ์ œ์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ๋ถ€๋ถ„์ด์—ˆ๋Š”๋ฐ, ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ์ˆ˜๋ก ์ŠคํŒŒ๊ฒŒํ‹ฐ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋งŽ์ด ์–ฝํžˆ๋Š” ๊ฒƒ์„

ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ตฌํ˜„์— ์ดˆ์ ์„ ๋‘๋‹ค๋ณด๋‹ˆ ๋‚˜์ค‘์—๋Š” ์–ด๋””์„œ๋ถ€ํ„ฐ ๊ณ ์ณ์•ผํ• ์ง€ ๊ฐ์ด ์žกํžˆ์ง€ ์•Š๊ธฐ๋„ํ•˜์—ฌ์„œ

์ถ”ํ›„ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ• ๋•Œ๋Š” ๊ตฌ์กฐ๋ถ€ํ„ฐ ์„ค๊ณ„ํ•˜๊ณ  ๊ทธ์— ๋งž๊ฒŒ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋А๊ผˆ๋‹ค.

move()๋ฉ”์„œ๋“œ์—์„œ๋Š” direction์œผ๋กœ InputView์—์„œ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์œผ๋กœ ๋ฐฉํ–ฅ์„ ์ •ํ•˜๊ณ , 

Bridge_path๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๋‹ค๋ฆฌ๋ฅผ ์ฐธ์กฐํ•ด์˜จ๋‹ค. 

while๋ฌธ์„ ํ†ตํ•ด bridge_size์— ๋„๋‹ฌํ• ๋•Œ๊นŒ์ง€ direction์—์„œ ์ž…๋ ฅ๋ฐ›๋Š” ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

"U" = ์œ„ / "D" = ์•„๋ž˜

์ž…๋ ฅ๋œ ๋ฐฉํ–ฅ์ด ์ •๋‹ต์ผ ๊ฒฝ์šฐ์—๋Š”

if (Bridge_path.get(i) == direction) { 
	i += 2; 
    	count++; 
    	map_print("O"); 
    	direction = InputView.readMoving();
}

์ฒ˜๋Ÿผ ์ฆ๊ฐ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๊ณ , map_print๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์— O๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•˜์˜€๋‹ค.

if๋ฌธ ์•ˆ์— ์ด 4์ค„์˜ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด์žˆ์—ˆ์œผ๋‚˜, ํ•จ์ˆ˜ ๋‚ด 15์ค„ ์ œํ•œ์‚ฌํ•ญ์„ ๋งž์ถ”๊ธฐ ์œ„ํ•˜์—ฌ ํ•œ ์ค„๋กœ ๋งž์ถฐ๋†“๊ธฐ๋„ํ–ˆ์ง€๋งŒ,

๋งค์šฐ ๋น„ํšจ์œจ์ ์ธ ๊ฒƒ ๊ฐ™์•˜๊ณ  ์ด ํด๋ž˜์Šค๋ฅผ ๋” ์ชผ๊ฐœ์–ด ๊ด€๋ฆฌํ•˜์˜€์œผ๋ฉด ์–ด๋• ์„๊นŒํ•˜๋Š” ์ƒ๊ฐ๋„ ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค.

์ •๋‹ต์ด ์•„๋‹ ๊ฒฝ์šฐ์—๋Š”

else map_print("X"); retry();

์ฒ˜๋Ÿผ map_print๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์— X๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  retry()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์žฌ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋œฐ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

retry() ๋ฉ”์„œ๋“œ์—์„œ

game_choice ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์žฌ์‹œ์ž‘ํ•  ๊ฒƒ์ธ์ง€, ์ข…๋ฃŒํ• ๊ฒƒ์ธ์ง€ ์ž…๋ ฅ์„ ๋ฐ›๊ณ ,

"R"์ด๋ฉด ์žฌ์‹œ์ž‘์ด๋ฏ€๋กœ create()๋ฅผ ํ†ตํ•ด BridgeGame ํด๋ž˜์Šค๋ฅผ ์žฌํ˜ธ์ถœํ•˜์˜€๊ณ , 

"Q"๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ์œผ๋ฉด ์ข…๋ฃŒ์ด๋ฏ€๋กœ, ์„ฑ๊ณต์—ฌ๋ถ€ ํŒ๋‹จ ํ›„ "์‹คํŒจ" ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.


<BridgeMaker.java>

package bridge;

import java.util.ArrayList;
import java.util.List;
import bridge.BridgeRandomNumberGenerator;

/**
 * ๋‹ค๋ฆฌ์˜ ๊ธธ์ด๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„์„œ ๋‹ค๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
 */
public class BridgeMaker {

    private final BridgeNumberGenerator bridgeNumberGenerator;

    public BridgeMaker(BridgeNumberGenerator bridgeNumberGenerator) {
        this.bridgeNumberGenerator = bridgeNumberGenerator;
    }

    /**
     * @param size ๋‹ค๋ฆฌ์˜ ๊ธธ์ด
     * @return ์ž…๋ ฅ๋ฐ›์€ ๊ธธ์ด์— ํ•ด๋‹นํ•˜๋Š” ๋‹ค๋ฆฌ ๋ชจ์–‘. ์œ„ ์นธ์ด๋ฉด "U", ์•„๋ž˜ ์นธ์ด๋ฉด "D"๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
     */
    public static List<String> makeBridge(int size) {
        List<String> bridge = new ArrayList<>();
        int temp; String correct_direction;
        for(int i = 0; i < size; i++){
            temp = BridgeRandomNumberGenerator.generate_num();
            if(temp == 1) {
                correct_direction = "U";
                bridge.add(i, correct_direction); }
            else if(temp == 0) {
                correct_direction = "D";
                bridge.add(i, correct_direction); }
        } return bridge;
    }
}

- BridgeMaker๋Š” ๋ง๊ทธ๋Œ€๋กœ ๋‹ค๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ถ€๋ถ„์ธ๋ฐ, ๋‹ค๋ฆฌ์˜ ๊ธธ์ด์— ๋”ฐ๋ผ U, D ๋ฐฉํ–ฅ์œผ๋กœ ๋‹ค๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด๋‚˜๊ฐ„๋‹ค.


<BridgeNumberGenerator.java>

package bridge;

@FunctionalInterface
public interface BridgeNumberGenerator {

    int generate();
}

- ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด generate๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค.


<BridgeRandomNumberGenerator.java>

package bridge;

import camp.nextstep.edu.missionutils.Randoms;

public class BridgeRandomNumberGenerator implements BridgeNumberGenerator {

    // ์•„๋ž˜๋ฅผ 0์œผ๋กœ ์ง€์ •
    private static final int RANDOM_LOWER_INCLUSIVE = 0;

    // ์œ„๋ฅผ 1๋กœ ์ง€์ •
    private static final int RANDOM_UPPER_INCLUSIVE = 1;

    // ์œ„(1) or ์•„๋ž˜(0) ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜
    @Override
    public int generate() {
        return Randoms.pickNumberInRange(RANDOM_LOWER_INCLUSIVE, RANDOM_UPPER_INCLUSIVE);
    }

    public static int generate_num(){
        return Randoms.pickNumberInRange(RANDOM_LOWER_INCLUSIVE, RANDOM_UPPER_INCLUSIVE);
    }
}

- ์ „์—ญ๋ณ€์ˆ˜๋กœ 0๊ณผ 1๋กœ ์œ„ ์•„๋ž˜๋ฅผ ์ข€ ๋” ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๊ณ ,

generate ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด 0๊ณผ 1์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.


<InputView.java>

package bridge;

import camp.nextstep.edu.missionutils.Console;

/**
 * ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
 */
public class InputView {

    /**
     * ๋‹ค๋ฆฌ์˜ ๊ธธ์ด๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
     */
    public static int readBridgeSize() {
        System.out.println("๋‹ค๋ฆฌ์˜ ๊ธธ์ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. ");
        String input = Console.readLine();
        int bridge_length = Integer.parseInt(input);
        BridgeMaker.makeBridge(bridge_length);
        return bridge_length;
    }

    /**
     * ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋™ํ•  ์นธ์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
     */
    public static String readMoving() {
        System.out.println("์ด๋™ํ•  ์นธ์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”. (์œ„: U, ์•„๋ž˜: D)");
        String direction = Console.readLine();

        return direction;
    }

    /**
     * ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์ž„์„ ๋‹ค์‹œ ์‹œ๋„ํ• ์ง€ ์ข…๋ฃŒํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
     */
    public static String readGameCommand() {
        System.out.println("๊ฒŒ์ž„์„ ๋‹ค์‹œ ์‹œ๋„ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. (์žฌ์‹œ๋„: R, ์ข…๋ฃŒ: Q)");
        String game_choice = Console.readLine();

        return game_choice;
    }
}

- ๋‹ค๋ฆฌ์˜ ๊ธธ์ด๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ์ด๋™ํ•  ์นธ๋„ ์ž…๋ ฅ๋ฐ›์•„ ๊ฐ๊ฐ ์ž…๋ ฅ๋ฐ›์€ input๊ณผ direction์œผ๋กœ

๋‹ค๋ฅธ ํด๋ž˜์Šค๋“ค์„ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

retry()๋ถ€๋ถ„๋˜ํ•œ readGameCommand()์™€ ๊ด€๋ จ์ด ์žˆ๋Š”๋ฐ, '๋‹ค์‹œ ์‹œ๋„ํ• ์ง€์˜ ์—ฌ๋ถ€'๋ฅผ

game_choice์— ๋‹ด์•„ readGameCommand()๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํด๋ž˜์Šค์— ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค.


<OutputView.java>

package bridge;

/**
 * ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒŒ์ž„ ์ง„ํ–‰ ์ƒํ™ฉ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
 */
public class OutputView {

    /**
     * ํ˜„์žฌ๊นŒ์ง€ ์ด๋™ํ•œ ๋‹ค๋ฆฌ์˜ ์ƒํƒœ๋ฅผ ์ •ํ•ด์ง„ ํ˜•์‹์— ๋งž์ถฐ ์ถœ๋ ฅํ•œ๋‹ค.
     * <p>
     * ์ถœ๋ ฅ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ์˜ ์ธ์ž(parameter)๋Š” ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
     */
    public void printMap() {
        String move_print = BridgeGame.map_move(); int count = BridgeGame.endgame_2();
        String count_print = " | " + move_print;
        for(int i = 0; i <= count; i++){
            if(count == 1){
                System.out.println("[ " + move_print + " ]");                System.out.println("[ " + move_print + " ]");
            }
            else if(count >= 1){
                System.out.println("[ " + move_print + count_print + " ]");
                System.out.println("[ " + move_print + count_print + " | " + move_print + " ]");
            }
        }
    }

    /**
     * ๊ฒŒ์ž„์˜ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ •ํ•ด์ง„ ํ˜•์‹์— ๋งž์ถฐ ์ถœ๋ ฅํ•œ๋‹ค.
     * <p>
     * ์ถœ๋ ฅ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ์˜ ์ธ์ž(parameter)๋Š” ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
     */
    public void printResult() {

        String final_result = BridgeGame.endgame_1();
        int final_count = BridgeGame.endgame_2();
        System.out.println("\n๊ฒŒ์ž„ ์„ฑ๊ณต ์—ฌ๋ถ€: " + final_result);
        System.out.println("์ด ์‹œ๋„ํ•œ ํšŸ์ˆ˜: " + final_count);
    }
}

- ์ตœ์ข…์ ์ธ ๊ฒฐ๊ณผ์™€ ์ค‘๊ฐ„ ์ง„ํ–‰์ƒํ™ฉ์„ ์ถœ๋ ฅํ•˜๋Š” OutputView๋Š” ๋งค์šฐ ๊ตฌํ˜„์ด ์–ด๋ ค์› ๋˜ ํด๋ž˜์Šค ์ค‘์— ํ•˜๋‚˜์˜€๋‹ค.

move_print๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๋‹ค๋ฆฌ์˜ ์ด๋™๊ฒฝ๋กœ๋ฅผ ๊ทธ๋ ค๋‚ด์•ผํ•˜๋Š”๋ฐ, ์กฐ๊ฑด๋ฌธ์ด ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ๊ธธ์–ด์งˆ ๊ฒƒ ๊ฐ™์•„

์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ํ›„ ๋ฆฌํŒฉํ† ๋ง์„ ํ•ด๋ณด๊ณ ์ž ํ•˜์˜€๋‹ค.


"์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•˜์—ฌ ์‹คํ–‰์— ์‹คํŒจํ•˜์˜€๋‹ค" ๋Š” ๋ฌธ๊ตฌ๋Š” ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ๋งŽ์ด ๊ฒช์–ด๋ดค์ง€๋งŒ ์ด๋ฒˆ 4์ฃผ์ฐจ์—์„œ๋Š”

๊ณผ์ œ ์ˆ˜ํ–‰์ œ์ถœ์ผ๊นŒ์ง€ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ์ฑ„ ๋งˆ๋ฌด๋ฆฌ๊ฐ€ ๋˜์–ด๋ฒ„๋ ธ๋‹ค.

๋ฌธ์ œ์ธ ๋ถ€๋ถ„์€ ์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•˜๋Š” OutputView๋ถ€๋ถ„์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๊ณผ์ •์—์„œ 

ํด๋ž˜์Šค๋ฅผ ๋ฏธ๋ฆฌ ์„ธ๋ถ„ํ™”ํ•˜์ง€ ์•Š์€ ๊ฒƒ๋“ค์ด ํฐ ์žฅ์• ๋ฌผ์ด ๋˜์—ˆ๋‹ค.๐ŸŽญ


๐Ÿฅฒ <๋งˆ์น˜๋ฉฐ..> ๐Ÿฅฒ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋А๋‚€์ ์€ ๊ฐ ํด๋ž˜์Šค์˜ ์ฐธ์กฐ ๋˜ํ•œ ์—‰ํ‚ค๋ฉด ๋งค์šฐ ๋ณต์žกํ•œ ์ฝ”๋“œ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค๋Š” ์‚ฌ์‹ค์„

์ธ์ง€ํ•˜์˜€๋‹ค. ํด๋ž˜์Šค๋ฅผ ๋ฌด์ž‘์ • ์ž‘๊ฒŒ ๋‚˜๋ˆ„๋ ค ํ•˜๋‹ค๋ณด๋‹ˆ ์–ด๋–ค ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด์•ผํ• ์ง€ ๊ฐ์ด ์žกํžˆ์ง€ ์•Š๋Š” ๊ฒƒ๋„ ์žˆ์—ˆ๊ณ ,

๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์—ฌ ๊ทธ ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์ฐธ์กฐํ•˜๋Š” ๊ณผ์ •์—์„œ ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ๋ฐ›๋Š” ๋ฐฉ์‹ ๋˜ํ•œ ํšจ๊ณผ์ ์ด์ง€ ์•Š์•˜๋‹ค.

๋งˆ์ง€๋ง‰ ์ฃผ์ฐจ๊นŒ์ง€ ํ”„๋ฆฌ์ฝ”์Šค๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ง€๊ธˆ๊นŒ์ง€ ํ•ด์™”๋˜ ํ”„๋กœ์ ํŠธ์™€๋Š” ์‚ฌ๋ญ‡ ๋‹ค๋ฅธ ์ฝ”๋“œ ์„ค๊ณ„ ๊ณผ์ œ์—ฌ์„œ

๋ฐฐ์šธ ์ , ๋ฐฐ์šด ์ ์ด ์ •๋ง ๋งŽ์•˜๋‹ค.

๋ชจ๋“  ๊ณผ์ œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•ด๋‚ด์ง€ ๋ชปํ•œ ์ ์€ ์•„์‰ฝ์ง€๋งŒ, ์–ด๋ ค์›€์„ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๋Š” ๊ณผ์ •, ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๊ณผ์ •์—์„œ

์กฐ๊ธˆ์€ ์„ฑ์žฅํ–ˆ์Œ์„ ๋А๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๐ŸŽข

์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค ํ”„๋ฆฌ์ฝ”์Šค ํ•œ๋‹ฌ๊ณผ์ • ํ†ตํ•ด ๋งŽ์€ ๊ฒƒ์„ ์–ป์–ด๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค..๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป๐Ÿ˜Š