ewhk9887/korean_code_reviews_from_github huggingface dataset:
@@ -1,4 +1,70 @@
 package controller;
 
+
+import domain.card.Deck;
+import domain.user.*;
+import view.InputView;
+import view.OutputView;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import static java.util.stream.Collectors.toList;
+
 public class BlackJackGame {
+
+    public static void main(String[] args) {
+        Users users = inputUsers();
+        Deck deck = new Deck();
+        deck.distributeCardsToUsers(users);
+        OutputView.printDistributeCardsMessageAndCardsOfAllUsers(users);
+        proceedPlayersTurn(users.findPlayers(), deck);
+        proceedDealerTurn(users.findDealer(), deck);
+        OutputView.printAllUsersResult(users);
+        OutputView.printAllUsersProfit(users);
+    }
+
+    private static Users inputUsers() {
+        List<UserName> userNames = inputPlayerNames();
+        List<User> users = userNames.stream()
+                .map(BlackJackGame::convertNamesAndBettingMoneyIntoPlayers)
+                .collect(toList());
+        users.add(new Dealer());
+        return new Users(users);
+    }
+
+    private static List<UserName> inputPlayerNames() {
+        return InputView.inputNames().stream()
+                .map(String::trim)
+                .map(UserName::new)
+                .collect(toList());
+    }
+
+    private static Player convertNamesAndBettingMoneyIntoPlayers(UserName userName) {
+        BettingMoney bettingMoney = convertAmountIntoBettingMoney(InputView.inputAmount(userName));
+        return new Player(userName, bettingMoney);
+    }
+
+    private static BettingMoney convertAmountIntoBettingMoney(BigDecimal amount) {
+        return new BettingMoney(amount);
+    }
+
+    private static void proceedPlayersTurn(List<Player> players, Deck deck) {
+        players.forEach(player -> proceedPlayerTurn(player, deck));
+    }
+
+    private static void proceedPlayerTurn(Player player, Deck deck) {
+        while (player.isOwnTurn()) {
+            player.proceedOwnTurn(InputView.inputAnswer(player), deck);
+            OutputView.printCardsHeldByPlayer(player);
+        }
+    }
+
+    private static void proceedDealerTurn(Dealer dealer, Deck deck) {
+        while (dealer.isOwnTurn()) {
+            dealer.hit(deck);
+            OutputView.printDealerGetOneMoreCard();
+        }
+    }
+
 }

리뷰: ```suggestion
        PlayerProfitStatistics playerProfitStatistics = players.producePlayersProfitStatistics(dealer);
```
위와 같이 ``producePlayersProfitStatistics`` 메서드의 반환 타입을 ``PlayerProfitStatistics``로 하는 것이 낫지 않을까요?
@@ -1,4 +1,70 @@
 package controller;
 
+
+import domain.card.Deck;
+import domain.user.*;
+import view.InputView;
+import view.OutputView;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import static java.util.stream.Collectors.toList;
+
 public class BlackJackGame {
+
+    public static void main(String[] args) {
+        Users users = inputUsers();
+        Deck deck = new Deck();
+        deck.distributeCardsToUsers(users);
+        OutputView.printDistributeCardsMessageAndCardsOfAllUsers(users);
+        proceedPlayersTurn(users.findPlayers(), deck);
+        proceedDealerTurn(users.findDealer(), deck);
+        OutputView.printAllUsersResult(users);
+        OutputView.printAllUsersProfit(users);
+    }
+
+    private static Users inputUsers() {
+        List<UserName> userNames = inputPlayerNames();
+        List<User> users = userNames.stream()
+                .map(BlackJackGame::convertNamesAndBettingMoneyIntoPlayers)
+                .collect(toList());
+        users.add(new Dealer());
+        return new Users(users);
+    }
+
+    private static List<UserName> inputPlayerNames() {
+        return InputView.inputNames().stream()
+                .map(String::trim)
+                .map(UserName::new)
+                .collect(toList());
+    }
+
+    private static Player convertNamesAndBettingMoneyIntoPlayers(UserName userName) {
+        BettingMoney bettingMoney = convertAmountIntoBettingMoney(InputView.inputAmount(userName));
+        return new Player(userName, bettingMoney);
+    }
+
+    private static BettingMoney convertAmountIntoBettingMoney(BigDecimal amount) {
+        return new BettingMoney(amount);
+    }
+
+    private static void proceedPlayersTurn(List<Player> players, Deck deck) {
+        players.forEach(player -> proceedPlayerTurn(player, deck));
+    }
+
+    private static void proceedPlayerTurn(Player player, Deck deck) {
+        while (player.isOwnTurn()) {
+            player.proceedOwnTurn(InputView.inputAnswer(player), deck);
+            OutputView.printCardsHeldByPlayer(player);
+        }
+    }
+
+    private static void proceedDealerTurn(Dealer dealer, Deck deck) {
+        while (dealer.isOwnTurn()) {
+            dealer.hit(deck);
+            OutputView.printDealerGetOneMoreCard();
+        }
+    }
+
 }

리뷰: 이 기능은 ``Player`` 에게 카드를 한 장 더 받을지 말지를 묻는 기능인데,  player와는 관계없이 동작하고 있어요 👀
또한 매번 질문을 할 때마다 Answer 객체를 만드는 것 또한 비효율적이라고 생각해요 😅
player 객체에게 메시지를 보내볼 수 있지 않을까요? 🤔
@@ -1,4 +1,70 @@
 package controller;
 
+
+import domain.card.Deck;
+import domain.user.*;
+import view.InputView;
+import view.OutputView;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import static java.util.stream.Collectors.toList;
+
 public class BlackJackGame {
+
+    public static void main(String[] args) {
+        Users users = inputUsers();
+        Deck deck = new Deck();
+        deck.distributeCardsToUsers(users);
+        OutputView.printDistributeCardsMessageAndCardsOfAllUsers(users);
+        proceedPlayersTurn(users.findPlayers(), deck);
+        proceedDealerTurn(users.findDealer(), deck);
+        OutputView.printAllUsersResult(users);
+        OutputView.printAllUsersProfit(users);
+    }
+
+    private static Users inputUsers() {
+        List<UserName> userNames = inputPlayerNames();
+        List<User> users = userNames.stream()
+                .map(BlackJackGame::convertNamesAndBettingMoneyIntoPlayers)
+                .collect(toList());
+        users.add(new Dealer());
+        return new Users(users);
+    }
+
+    private static List<UserName> inputPlayerNames() {
+        return InputView.inputNames().stream()
+                .map(String::trim)
+                .map(UserName::new)
+                .collect(toList());
+    }
+
+    private static Player convertNamesAndBettingMoneyIntoPlayers(UserName userName) {
+        BettingMoney bettingMoney = convertAmountIntoBettingMoney(InputView.inputAmount(userName));
+        return new Player(userName, bettingMoney);
+    }
+
+    private static BettingMoney convertAmountIntoBettingMoney(BigDecimal amount) {
+        return new BettingMoney(amount);
+    }
+
+    private static void proceedPlayersTurn(List<Player> players, Deck deck) {
+        players.forEach(player -> proceedPlayerTurn(player, deck));
+    }
+
+    private static void proceedPlayerTurn(Player player, Deck deck) {
+        while (player.isOwnTurn()) {
+            player.proceedOwnTurn(InputView.inputAnswer(player), deck);
+            OutputView.printCardsHeldByPlayer(player);
+        }
+    }
+
+    private static void proceedDealerTurn(Dealer dealer, Deck deck) {
+        while (dealer.isOwnTurn()) {
+            dealer.hit(deck);
+            OutputView.printDealerGetOneMoreCard();
+        }
+    }
+
 }

리뷰: 재귀문 대신에, Player 및 Dealer가 카드를 뽑을 때, Player 및 Dealer 상태가 변경되도록 할 수 있지 않을까요 🤔 (Player의 현재 상태를 나타내는 상태값을 추가해야 할 수도 있을 것 같아요 🧐) 
그러면 지금과 같이 재귀가 아니더라도 player의 턴이 지속되는 동안에는 계속 패를 뽑을지 말지 질문할 수 있는 구조로 변경할 수 있을 것 같아요 😉
@@ -1,4 +1,70 @@
 package controller;
 
+
+import domain.card.Deck;
+import domain.user.*;
+import view.InputView;
+import view.OutputView;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import static java.util.stream.Collectors.toList;
+
 public class BlackJackGame {
+
+    public static void main(String[] args) {
+        Users users = inputUsers();
+        Deck deck = new Deck();
+        deck.distributeCardsToUsers(users);
+        OutputView.printDistributeCardsMessageAndCardsOfAllUsers(users);
+        proceedPlayersTurn(users.findPlayers(), deck);
+        proceedDealerTurn(users.findDealer(), deck);
+        OutputView.printAllUsersResult(users);
+        OutputView.printAllUsersProfit(users);
+    }
+
+    private static Users inputUsers() {
+        List<UserName> userNames = inputPlayerNames();
+        List<User> users = userNames.stream()
+                .map(BlackJackGame::convertNamesAndBettingMoneyIntoPlayers)
+                .collect(toList());
+        users.add(new Dealer());
+        return new Users(users);
+    }
+
+    private static List<UserName> inputPlayerNames() {
+        return InputView.inputNames().stream()
+                .map(String::trim)
+                .map(UserName::new)
+                .collect(toList());
+    }
+
+    private static Player convertNamesAndBettingMoneyIntoPlayers(UserName userName) {
+        BettingMoney bettingMoney = convertAmountIntoBettingMoney(InputView.inputAmount(userName));
+        return new Player(userName, bettingMoney);
+    }
+
+    private static BettingMoney convertAmountIntoBettingMoney(BigDecimal amount) {
+        return new BettingMoney(amount);
+    }
+
+    private static void proceedPlayersTurn(List<Player> players, Deck deck) {
+        players.forEach(player -> proceedPlayerTurn(player, deck));
+    }
+
+    private static void proceedPlayerTurn(Player player, Deck deck) {
+        while (player.isOwnTurn()) {
+            player.proceedOwnTurn(InputView.inputAnswer(player), deck);
+            OutputView.printCardsHeldByPlayer(player);
+        }
+    }
+
+    private static void proceedDealerTurn(Dealer dealer, Deck deck) {
+        while (dealer.isOwnTurn()) {
+            dealer.hit(deck);
+            OutputView.printDealerGetOneMoreCard();
+        }
+    }
+
 }

리뷰: 이 또한 Controller의 역할이 맞을까요? 🤔  처음 코멘트처럼 ``BlackJackGame`` 객체와 Controller 를 분리해보면 좋을 것 같아요
@@ -1,6 +1,18 @@
 package domain.card;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 public class Card {
+    private static final List<Card> CACHED_CARDS = new ArrayList<>();
+
+    static {
+        for (Symbol symbol : Symbol.values()) {
+            Arrays.stream(Type.values())
+                    .forEach(type -> CACHED_CARDS.add(new Card(symbol, type)));
+        }
+    }
 
     private final Symbol symbol;
     private final Type type;
@@ -10,4 +22,23 @@ public Card(Symbol symbol, Type type) {
         this.type = type;
     }
 
-}
\ No newline at end of file
+    public boolean isAceType() {
+        return type.isAce();
+    }
+
+    public boolean isTenNumberType() {
+        return type.isTenNumber();
+    }
+
+    public Symbol getSymbol() {
+        return symbol;
+    }
+
+    public Type getType() {
+        return type;
+    }
+
+    public static List<Card> getCachedCards() {
+        return CACHED_CARDS;
+    }
+}

리뷰: ```suggestion
        return type == Type.ACE;
```
Enum의 비교는 **equlas**가 아닌  ``==`` 로 해요 😉
아래의 ``isTenNumberType`` 또한 변경해주세요 🙏
@@ -0,0 +1,36 @@
+package domain.card;
+
+import domain.user.User;
+import domain.user.Users;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class Deck {
+    private static final int ZERO = 0;
+    private static final int NUMBER_OF_CARDS_BY_RULE = 2;
+    private static final int TOP = 0;
+
+    private final List<Card> cards;
+
+    public Deck() {
+        this.cards = new ArrayList<>(Card.getCachedCards());
+        Collections.shuffle(cards);
+    }
+
+    public void distributeCardsToUsers(Users users) {
+        for (int i = ZERO; i < NUMBER_OF_CARDS_BY_RULE; i++) {
+            users.receiveCards(this);
+        }
+    }
+
+    public void distributeCard(User user) {
+        user.draw(cards.remove(TOP));
+    }
+
+    public List<Card> getCards() {
+        return Collections.unmodifiableList(cards);
+    }
+
+}

리뷰: Lotto에서 LottoNumber를 캐싱했던 것 처럼, 52개의 Card 들도 미리 캐싱을 해두고, ``initializeDeck`` 을 호출하는 순간, 캐싱된 카드들을 섞어서 ``cards`` 필드에 할당해주면 어떨까요 🤔
@@ -0,0 +1,34 @@
+package domain.result;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Arrays;
+
+public enum GameResult {
+    WIN(1, new BigDecimal("1")),
+    DRAW(0, new BigDecimal("0")),
+    LOSE(-1, new BigDecimal("-1"));
+
+    private static final int SCALE = 0;
+
+    private int value;
+    private BigDecimal dividendRate;
+
+    GameResult(int value, BigDecimal dividendRate) {
+        this.value = value;
+        this.dividendRate = dividendRate;
+    }
+
+    public static GameResult determineGameResult(int gameResultValue) {
+        return Arrays.stream(GameResult.values())
+                .filter(gameResult -> gameResult.value == gameResultValue)
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 게임 결과입니다."));
+    }
+
+    public BigDecimal multiplyDividendRate(BigDecimal amount) {
+        return dividendRate.multiply(amount)
+                .setScale(SCALE, RoundingMode.HALF_EVEN);
+    }
+
+}

리뷰: 인텔리제이 화면의 우측 세로선을 넘기는 경우에는 가급적 띄어쓰기를 해주세요 😉 
![image](https://user-images.githubusercontent.com/47850258/117677104-1d2e4500-b1e9-11eb-94fe-21da4e9e39a4.png)
@@ -0,0 +1,36 @@
+package domain.card;
+
+import domain.user.User;
+import domain.user.Users;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class Deck {
+    private static final int ZERO = 0;
+    private static final int NUMBER_OF_CARDS_BY_RULE = 2;
+    private static final int TOP = 0;
+
+    private final List<Card> cards;
+
+    public Deck() {
+        this.cards = new ArrayList<>(Card.getCachedCards());
+        Collections.shuffle(cards);
+    }
+
+    public void distributeCardsToUsers(Users users) {
+        for (int i = ZERO; i < NUMBER_OF_CARDS_BY_RULE; i++) {
+            users.receiveCards(this);
+        }
+    }
+
+    public void distributeCard(User user) {
+        user.draw(cards.remove(TOP));
+    }
+
+    public List<Card> getCards() {
+        return Collections.unmodifiableList(cards);
+    }
+
+}

리뷰: 개인적인 생각이지만, cards를 ``Stack`` 이나 ``Queue`` 자료형을 사용해보는 것도 좋을 것 같아요 😉 
이런 방법도 있다 정로도 아시면 좋을거 같아요
@@ -1,4 +1,70 @@
 package controller;
 
+
+import domain.card.Deck;
+import domain.user.*;
+import view.InputView;
+import view.OutputView;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import static java.util.stream.Collectors.toList;
+
 public class BlackJackGame {
+
+    public static void main(String[] args) {
+        Users users = inputUsers();
+        Deck deck = new Deck();
+        deck.distributeCardsToUsers(users);
+        OutputView.printDistributeCardsMessageAndCardsOfAllUsers(users);
+        proceedPlayersTurn(users.findPlayers(), deck);
+        proceedDealerTurn(users.findDealer(), deck);
+        OutputView.printAllUsersResult(users);
+        OutputView.printAllUsersProfit(users);
+    }
+
+    private static Users inputUsers() {
+        List<UserName> userNames = inputPlayerNames();
+        List<User> users = userNames.stream()
+                .map(BlackJackGame::convertNamesAndBettingMoneyIntoPlayers)
+                .collect(toList());
+        users.add(new Dealer());
+        return new Users(users);
+    }
+
+    private static List<UserName> inputPlayerNames() {
+        return InputView.inputNames().stream()
+                .map(String::trim)
+                .map(UserName::new)
+                .collect(toList());
+    }
+
+    private static Player convertNamesAndBettingMoneyIntoPlayers(UserName userName) {
+        BettingMoney bettingMoney = convertAmountIntoBettingMoney(InputView.inputAmount(userName));
+        return new Player(userName, bettingMoney);
+    }
+
+    private static BettingMoney convertAmountIntoBettingMoney(BigDecimal amount) {
+        return new BettingMoney(amount);
+    }
+
+    private static void proceedPlayersTurn(List<Player> players, Deck deck) {
+        players.forEach(player -> proceedPlayerTurn(player, deck));
+    }
+
+    private static void proceedPlayerTurn(Player player, Deck deck) {
+        while (player.isOwnTurn()) {
+            player.proceedOwnTurn(InputView.inputAnswer(player), deck);
+            OutputView.printCardsHeldByPlayer(player);
+        }
+    }
+
+    private static void proceedDealerTurn(Dealer dealer, Deck deck) {
+        while (dealer.isOwnTurn()) {
+            dealer.hit(deck);
+            OutputView.printDealerGetOneMoreCard();
+        }
+    }
+
 }

리뷰: 이 부분에 관하여 [참고자료](https://namocom.tistory.com/754)를 찾아봤습니다!
@@ -1,4 +1,70 @@
 package controller;
 
+
+import domain.card.Deck;
+import domain.user.*;
+import view.InputView;
+import view.OutputView;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import static java.util.stream.Collectors.toList;
+
 public class BlackJackGame {
+
+    public static void main(String[] args) {
+        Users users = inputUsers();
+        Deck deck = new Deck();
+        deck.distributeCardsToUsers(users);
+        OutputView.printDistributeCardsMessageAndCardsOfAllUsers(users);
+        proceedPlayersTurn(users.findPlayers(), deck);
+        proceedDealerTurn(users.findDealer(), deck);
+        OutputView.printAllUsersResult(users);
+        OutputView.printAllUsersProfit(users);
+    }
+
+    private static Users inputUsers() {
+        List<UserName> userNames = inputPlayerNames();
+        List<User> users = userNames.stream()
+                .map(BlackJackGame::convertNamesAndBettingMoneyIntoPlayers)
+                .collect(toList());
+        users.add(new Dealer());
+        return new Users(users);
+    }
+
+    private static List<UserName> inputPlayerNames() {
+        return InputView.inputNames().stream()
+                .map(String::trim)
+                .map(UserName::new)
+                .collect(toList());
+    }
+
+    private static Player convertNamesAndBettingMoneyIntoPlayers(UserName userName) {
+        BettingMoney bettingMoney = convertAmountIntoBettingMoney(InputView.inputAmount(userName));
+        return new Player(userName, bettingMoney);
+    }
+
+    private static BettingMoney convertAmountIntoBettingMoney(BigDecimal amount) {
+        return new BettingMoney(amount);
+    }
+
+    private static void proceedPlayersTurn(List<Player> players, Deck deck) {
+        players.forEach(player -> proceedPlayerTurn(player, deck));
+    }
+
+    private static void proceedPlayerTurn(Player player, Deck deck) {
+        while (player.isOwnTurn()) {
+            player.proceedOwnTurn(InputView.inputAnswer(player), deck);
+            OutputView.printCardsHeldByPlayer(player);
+        }
+    }
+
+    private static void proceedDealerTurn(Dealer dealer, Deck deck) {
+        while (dealer.isOwnTurn()) {
+            dealer.hit(deck);
+            OutputView.printDealerGetOneMoreCard();
+        }
+    }
+
 }

리뷰: 과도하게 원시값을 `View`에 전달하려고 했던 것 같습니다. 피드백 감사합니다 :)
@@ -1,4 +1,70 @@
 package controller;
 
+
+import domain.card.Deck;
+import domain.user.*;
+import view.InputView;
+import view.OutputView;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import static java.util.stream.Collectors.toList;
+
 public class BlackJackGame {
+
+    public static void main(String[] args) {
+        Users users = inputUsers();
+        Deck deck = new Deck();
+        deck.distributeCardsToUsers(users);
+        OutputView.printDistributeCardsMessageAndCardsOfAllUsers(users);
+        proceedPlayersTurn(users.findPlayers(), deck);
+        proceedDealerTurn(users.findDealer(), deck);
+        OutputView.printAllUsersResult(users);
+        OutputView.printAllUsersProfit(users);
+    }
+
+    private static Users inputUsers() {
+        List<UserName> userNames = inputPlayerNames();
+        List<User> users = userNames.stream()
+                .map(BlackJackGame::convertNamesAndBettingMoneyIntoPlayers)
+                .collect(toList());
+        users.add(new Dealer());
+        return new Users(users);
+    }
+
+    private static List<UserName> inputPlayerNames() {
+        return InputView.inputNames().stream()
+                .map(String::trim)
+                .map(UserName::new)
+                .collect(toList());
+    }
+
+    private static Player convertNamesAndBettingMoneyIntoPlayers(UserName userName) {
+        BettingMoney bettingMoney = convertAmountIntoBettingMoney(InputView.inputAmount(userName));
+        return new Player(userName, bettingMoney);
+    }
+
+    private static BettingMoney convertAmountIntoBettingMoney(BigDecimal amount) {
+        return new BettingMoney(amount);
+    }
+
+    private static void proceedPlayersTurn(List<Player> players, Deck deck) {
+        players.forEach(player -> proceedPlayerTurn(player, deck));
+    }
+
+    private static void proceedPlayerTurn(Player player, Deck deck) {
+        while (player.isOwnTurn()) {
+            player.proceedOwnTurn(InputView.inputAnswer(player), deck);
+            OutputView.printCardsHeldByPlayer(player);
+        }
+    }
+
+    private static void proceedDealerTurn(Dealer dealer, Deck deck) {
+        while (dealer.isOwnTurn()) {
+            dealer.hit(deck);
+            OutputView.printDealerGetOneMoreCard();
+        }
+    }
+
 }

리뷰: 놓쳤던 부분이네요! 꼼꼼한 피드백 감사합니다 :)
@@ -1,4 +1,70 @@
 package controller;
 
+
+import domain.card.Deck;
+import domain.user.*;
+import view.InputView;
+import view.OutputView;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import static java.util.stream.Collectors.toList;
+
 public class BlackJackGame {
+
+    public static void main(String[] args) {
+        Users users = inputUsers();
+        Deck deck = new Deck();
+        deck.distributeCardsToUsers(users);
+        OutputView.printDistributeCardsMessageAndCardsOfAllUsers(users);
+        proceedPlayersTurn(users.findPlayers(), deck);
+        proceedDealerTurn(users.findDealer(), deck);
+        OutputView.printAllUsersResult(users);
+        OutputView.printAllUsersProfit(users);
+    }
+
+    private static Users inputUsers() {
+        List<UserName> userNames = inputPlayerNames();
+        List<User> users = userNames.stream()
+                .map(BlackJackGame::convertNamesAndBettingMoneyIntoPlayers)
+                .collect(toList());
+        users.add(new Dealer());
+        return new Users(users);
+    }
+
+    private static List<UserName> inputPlayerNames() {
+        return InputView.inputNames().stream()
+                .map(String::trim)
+                .map(UserName::new)
+                .collect(toList());
+    }
+
+    private static Player convertNamesAndBettingMoneyIntoPlayers(UserName userName) {
+        BettingMoney bettingMoney = convertAmountIntoBettingMoney(InputView.inputAmount(userName));
+        return new Player(userName, bettingMoney);
+    }
+
+    private static BettingMoney convertAmountIntoBettingMoney(BigDecimal amount) {
+        return new BettingMoney(amount);
+    }
+
+    private static void proceedPlayersTurn(List<Player> players, Deck deck) {
+        players.forEach(player -> proceedPlayerTurn(player, deck));
+    }
+
+    private static void proceedPlayerTurn(Player player, Deck deck) {
+        while (player.isOwnTurn()) {
+            player.proceedOwnTurn(InputView.inputAnswer(player), deck);
+            OutputView.printCardsHeldByPlayer(player);
+        }
+    }
+
+    private static void proceedDealerTurn(Dealer dealer, Deck deck) {
+        while (dealer.isOwnTurn()) {
+            dealer.hit(deck);
+            OutputView.printDealerGetOneMoreCard();
+        }
+    }
+
 }

리뷰: 유념하도록 하겠습니다!