‡πŸ‘©‍πŸ’» ‡/º Java

[μš°μ•„ν•œ ν…Œν¬μ½”μŠ€ ν”„λ¦¬μ½”μŠ€] 2μ£Όμ°¨ μžλ™μ°¨ κ²½μ£Ό κ²Œμž„

Trudy | 솑연 2023. 11. 23. 20:29

문제

Java 기초λ₯Ό 배우기 μœ„ν•΄ 문제λ₯Ό μ’€ 더 μ‰½κ²Œ μˆ˜μ •ν•΄μ„œ 문제 풀이λ₯Ό μ§„ν–‰ν–ˆλ‹€.

μˆ˜μ •ν•œ λ¬Έμ œλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

πŸš€ κΈ°λŠ₯ μš”κ΅¬ 사항
μ΄ˆκ°„λ‹¨ μžλ™μ°¨ κ²½μ£Ό κ²Œμž„μ„ κ΅¬ν˜„ν•œλ‹€.
μ£Όμ–΄μ§„ 횟수 λ™μ•ˆ nλŒ€μ˜ μžλ™μ°¨λŠ” μ „μ§„ λ˜λŠ” 멈좜 수 μžˆλ‹€.각 μžλ™μ°¨μ— 이름을 λΆ€μ—¬ν•  수 μžˆλ‹€. μ „μ§„ν•˜λŠ” μžλ™μ°¨λ₯Ό 좜λ ₯ν•  λ•Œ μžλ™μ°¨ 이름을 같이 좜λ ₯ν•œλ‹€.μžλ™μ°¨ 이름은 5자 μ΄ν•˜λ§Œ κ°€λŠ₯ν•˜λ‹€.μ‚¬μš©μžλŠ” λͺ‡ 번의 이동을 ν•  것인지λ₯Ό μž…λ ₯ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.μ „μ§„ν•˜λŠ” 쑰건은 0μ—μ„œ 9 μ‚¬μ΄μ—μ„œ λ¬΄μž‘μœ„ 값을 κ΅¬ν•œ ν›„ λ¬΄μž‘μœ„ 값이 4 이상일 κ²½μš°μ΄λ‹€.μžλ™μ°¨ κ²½μ£Ό κ²Œμž„μ„ μ™„λ£Œν•œ ν›„ λˆ„κ°€ μš°μŠΉν–ˆλŠ”μ§€λ₯Ό μ•Œλ €μ€€λ‹€. μš°μŠΉμžλŠ” ν•œ λͺ… 이상일 수 μžˆλ‹€.μš°μŠΉμžκ°€ μ—¬λŸ¬ λͺ…일 경우 μ‰Όν‘œ(,)λ₯Ό μ΄μš©ν•˜μ—¬ κ΅¬λΆ„ν•œλ‹€.

 

πŸš€ μž…μΆœλ ₯ μš”κ΅¬ 사항

πŸš€μž…λ ₯
κ²½μ£Όν•  μžλ™μ°¨μ˜ 수 μž…λ ₯
3
κ²½μ£Ό ν•  μžλ™μ°¨ 이름을 μ°¨λ‘€λŒ€λ‘œ μž…λ ₯
pobi woni jun
μ‹œλ„ν•  회수
5

πŸš€μΆœλ ₯

κ²½μ£Όν•  μžλ™μ°¨ 이름을 μž…λ ₯ν•˜μ„Έμš”.(이름은 μ‰Όν‘œ(,) κΈ°μ€€μœΌλ‘œ ꡬ뢄)
pobi
woni
jun
μ‹œλ„ν•  νšŒμˆ˜λŠ” λͺ‡νšŒμΈκ°€μš”?
5
μ‹€ν–‰ κ²°κ³Ό
pobi : -
woni :
jun : -

pobi : --
woni : -
jun : --

pobi : ---
woni : --
jun : ---

pobi : ----
woni : ---
jun : ----

pobi : -----
woni : ----
jun : -----

μ΅œμ’… 우승자 : pobi, jun

 


풀이

클래슀 ꡬ쑰 :  Car, Race, CarRaceMain

 

- μžλ™μ°¨μ˜ 속성듀을 담은 Car.java

- Raceλ₯Ό μ§„ν–‰, 좜λ ₯μ‹œν‚€λŠ” λ©”μ†Œλ“œλ₯Ό 담은 Race.java

- μœ„ 두 ν΄λž˜μ“°λ₯Ό κ°€μ§€κ³  κ²Œμž„μ„ μ§„ν–‰ν•  Main ν΄λž˜μ“°μΈ CarRaceMain.java


Car의 속성은 nameκ³Ό λ‚˜μ•„κ°„ λ―Έν„°μˆ˜μΈ metersλ₯Ό μ§€μ •ν•΄λ‘μ—ˆλ‹€. 

μƒμ„±μžμ—μ„œλŠ” metersλŠ” 0으둜 λͺ¨λ‘ μ‹œμž‘ν•˜κΈ° λ•Œλ¬Έμ— name만 받도둝 μ„€μ •ν–ˆλ‹€. 

λͺ¨λ“  속성은 private으둜 μ„€μ •ν•΄μ„œ μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜λ₯Ό λ†’μ˜€κ³ , 이λ₯Ό getν•˜κ³  setν•˜κΈ° μœ„ν•΄ getter와 setter도 μ„€μ •ν•΄μ£Όμ—ˆλ‹€. 

 Car.java

package day04.carRace;

public class Car {
    private String name;
    private int meters;

    public Car(String name) {
        this.name = name;
        this.meters = 0;
    }

    public String getName() {
        return name;
    }

    public int getMeters() {
        return meters;
    }

    public void setMeters(int meters) {
        this.meters = meters;
    }


}

 


 

Raceλ₯Ό μ§„ν–‰μ‹œν‚€κΈ° μœ„ν•΄ Car 객체λ₯Ό μ €μž₯ν•œ λ°°μ—΄κ³Ό 총 λͺ‡ 회λ₯Ό μ‹€μ‹œν•  μ§€λ₯Ό μ €μž₯ν•  λ³€μˆ˜ tcλ₯Ό μ„ μ–Έν–ˆλ‹€. 

 

proceed() 

      0~9의 λ‚œμˆ˜λ₯Ό λ°œμƒμ‹œμΌœ 4 이상인 Car은 meters값에 1 μ¦κ°€ν•˜λ„λ‘ ν–ˆλ‹€.

print()

      Raceλ₯Ό μ‹€ν–‰ν•œ νšŸμˆ˜λ§ˆλ‹€ μ‹€ν–‰ν•œ κ²°κ³Όλ₯Ό 좜λ ₯ν•  λ–„ μ΄μš©ν•œλ‹€. 

whoWon()

       μš°μŠΉμžκ°€ λˆ„κ΅¬μΈμ§€ κ³„μ‚°ν•˜κ³ , 곡동 μš°μŠΉμžκ°€ μžˆμ„ 수 μžˆμœΌλ―€λ‘œ 우승자의 meters 값을 returnν•˜κ²Œ ν–ˆλ‹€. 

printWinner()

        μœ„μ—μ„œ κ³„μ‚°ν•œ 우승자의 meters 값을 μ΄μš©ν•΄μ„œ 우승자λ₯Ό 좜λ ₯ν•œλ‹€. 

raceStart()

        ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ŒνΌ μœ„ λ©”μ†Œλ“œλ₯Ό 적절히 μ΄μš©ν•˜μ—¬ ν˜ΈμΆœν•œλ‹€. 

 Race.java

package day04.carRace;

public class Race {
    private Car[] cars;
    private int tc;

    public Race(Car[] cars, int tc) {
        this.cars = cars;
        this.tc = tc;
    }

    void proceed(){
        int p;
        for (int i = 0; i < cars.length; i++) {
            p = (int)(Math.random()*9);
            if(p >= 4) cars[i].setMeters(cars[i].getMeters() + 1);
        }
    }

    void print(){
        System.out.println("μ‹€ν–‰ κ²°κ³Ό");
        for (int i = 0; i < cars.length; i++) {
            System.out.print(cars[i].getName() + " : ");
            for (int j = 0; j < cars[i].getMeters(); j++) {
                System.out.print("-");
            }
            System.out.println();
        }
        System.out.println();
    }

    int whoWon(){
        int max = cars[0].getMeters();
        for (int i = 1; i <cars.length; i++) {
            if(max < cars[i].getMeters()) max = cars[i].getMeters();
        }
        return max;
    }

    void printWinner(int max){
        System.out.print("μ΅œμ’… 우승자 : ");

        int count = 0;
        for(int i = 0; i < cars.length; i++) {
            if(cars[i].getMeters() == max) {
                count++;
            }
        }
        int count2 = 0;
        for(int i = 0; i < cars.length; i++) {
            if(count ==  1 && cars[i].getMeters() == max) {
                System.out.print(cars[i].getName());
                break;
            }
            else if(count2 == 0 && cars[i].getMeters() == max){
                count2++;
                System.out.print(cars[i].getName());
            }
            else if (count2 != 0 && cars[i].getMeters() == max) {
                System.out.println(", " + cars[i].getName());
            }
        }
    }

    void raceStart(){
        for (int i = 0; i < tc; i++) {
            proceed();
            print();
        }
        printWinner(whoWon());
    }
}

 


μžλ™μ°¨μ˜ μˆ˜μ™€ μžλ™μ°¨μ˜ 이름듀을 μž…λ ₯λ°›κ³ , μ‹œλ„ν•  횟 수λ₯Ό μž…λ ₯λ°›μ•„ Race의 μƒμ„±μžμ˜ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•˜μ—¬ Race 객체λ₯Ό μ‹€ν–‰ν•΄μ£Όμ—ˆλ‹€. 

CarRaceMain.java

package day04.carRace;

import java.util.Scanner;

public class CarRaceMain {
    public static void main(String[] args) {
        //μžλ™μ°¨μ˜ 개수 μž…λ ₯ λ°›κΈ°
        System.out.println("κ²½μ£Όν•  μžλ™μ°¨μ˜ 수λ₯Ό μž…λ ₯ν•˜μ„Έμš”");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        //μžλ™μ°¨ 이름 μž…λ ₯ λ°›μ•„μ„œ μžλ™μ°¨ 객체 생성 ν›„ 배열에 μ €μž₯
        System.out.println("κ²½μ£Όν•  μžλ™μ°¨ 이름을 μž…λ ₯ν•˜μ„Έμš”.");
        Car[] cars = new Car[n];
        for (int i = 0; i < n; i++) {
            String s = sc.next();
            cars[i] = new Car(s);
        }

        //μ‹œλ„ν•  횟수 μž…λ ₯ λ°›κΈ°
        System.out.println("μ‹œλ„ν•  νšŒμˆ˜λŠ” λͺ‡ νšŒμΈκ°€μš”?");
        int t = sc.nextInt();

        //Race 호좜
        Race race = new Race(cars, t);
        race.raceStart();
    }
}

 


μ‹€ν–‰ κ²°κ³Ό