본문 바로가기
문제를 풀어보자

JAVA) 자바의 정석 기초편 7-1 연습문제 풀이

by 휴일이 2022. 10. 9.

 

자바의 정석 기초편 - 객체지향 프로그래밍2

7-1번 연습 문제를 풀어보았습니다!!

 

 

Q) 섯다 카드 20장을 포함하는 섯다카드 한 벌(SutdaDeck클래스)를 정의한 것이다

섯다 카드 20장을 담는 SutdaCard 배열을 초기화하시오

단, 섯다 카드는 1부터 10까지의 숫자가 적힌 카드가 한 쌍씩 있고

숫자가 1,3,8인 경우, 둘 중에 한 장은 광(Kwang)이어야 한다

즉, SutdaCard의 인스턴스 변수 isKwang의 값이 true여야 한다

 

 

 

문제 풀이

class SutdaDeck {
    final int CARD_NUM = 20;
    SutdaCard[] cards = new SutdaCard[CARD_NUM];
    //섯다카드 20개의 객체배열
    //20장 다 1이고, true라서 다 k가 뜸

    SutdaDeck() {

        for(int a=0;a<cards.length;a++) {//일단 cards객체 배열의 인스턴스 생성
            cards[a] = new SutdaCard();
        }

        int j=1; //카드 숫자를 세어 10이 넘으면 초기화해줄 변수
        for(int i=0;i< cards.length;i++) { //카드 숫자를 부여하기 위해 for문
            cards[i].num = j; //j값을 집어넣음
            cards[i].isKwang=false; //일단 다 false해서 k를 떼줌
            j++; //한번 돌아갈때마다 1씩 증가(1,2,3...이렇게 부여해줘야 하니까

            if(j==11) { //j가 11이 되면
                j=1; //j를 1로 초기화해줌 1~10 하고 다시 1~10 해주기 위해
            }
        }

        //1,3,8에 광(k)를 붙여주기 위한 for문
        for (int i=0;i<10;i++) { //2장씩 들어있는 1,3,8중 한장씩에만 붙이면 되니까 10번만 돌려줌
            if(cards[i].num==1||cards[i].num==3||cards[i].num==8) { //카드번호가 1이거나3,8 이라면?
                cards[i].isKwang=true; //true값을 줘서 광을 붙여줌
            }
        }



    }

}

class SutdaCard {
    public boolean cards;
    int num; //카드넘버 1~10까지
    boolean isKwang; //광이면 true

    SutdaCard() {
        this(1, true);
    }

    SutdaCard(int num, boolean isKwang) {
        this.num = num;
        this.isKwang = isKwang;
    }

    public String toString() {
        return num + (isKwang ? "K" : ""); //isKwang이 true라면 k, 아니라면 ""
    }
}


public class Exercise7_1 {
    public static void main(String[] args) {
        SutdaDeck deck = new SutdaDeck(); //20개의 섯다 카드를 넣은 덱

        for(int i=0;i<deck.cards.length;i++) { //20번 돌림(출력을 위해)
            System.out.print(deck.cards[i]+","); //1~10하고 다시 1~10 나와야함
        }


    }
}

 

 

결과

 

처음 한 벌에만 k가 붙은 모습!

 

 

 

어렵게 생각하니 갱장히 어려웠던.............

하지만 쉬운 쪽으로 생각하니까 굉장히 쉬웠던 문제였당

 

조건이 주어졌을 때

어떤 식으로 풀어야할까????

무엇을 이용해서 풀어야할까???

이게 진짜 관건인 거 같다ㅜㅜ

 

사실 이 문제는 진짜 넘나 쉬운 문제였어서

처음에 머리가 아예 하얘져서

딴짓 좀 하다가 각잡고 풀었다

 

아이패드에 풀이도 써보고 방법도 써보고 했다ㅠㅠ

1시간 좀 넘게 걸린 거 같은데ㅜㅜ

 

공부 진짜 겉핥기로 한 거 같다

실전이 중요한 거 같다 더 열심히 해야지...

728x90