코딩테스트 - 프로그래머스/Lv. 0

[32] JAVA 양꼬치

유혁스쿨 2023. 11. 16. 14:25
728x90
반응형

문제 설명
머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < n < 1,000
  • n / 10 ≤ k < 1,000


입출력 예

n k result
10 3 124,000
64 6 768,000


입출력 예 #1

  • 10인분을 시켜 서비스로 음료수를 하나 받아 총 10 * 12000 + 3 * 2000 - 1 * 2000 = 124,000원입니다.

입출력 예 #2

  • 64인분을 시켜 서비스로 음료수를 6개 받아 총 64 * 12000 + 6 * 2000 - 6 * 2000 =768,000원입니다.

[나의 풀이]

class Solution {
    public int solution(int n, int k) {
        int divde = n / 10;
        return n * 12000 + (k - (divde >= 1? 1 : 0)*divde) * 2000;
    }
}

 

[풀이과정] 

 n인분 * 양꼬치값 + (음료k개 - (n인분/10 >= 1 ? 1 : 0)* n인분/10) * 2000

  1. n인분 만큼의 양꼬치가격을 구한다.
  2. 음료 k개에서 서비스 음료수 개수를 뺀다
    • 서비스 음료 갯수  
      • 10인분을 기준으로 1개 이므로 n / 10
    • 10인분 미만인 경우
      • 서비스음료 갯수가 1이상일 경우 1 아니면 0으로 처리한다.
  3. 음료 k개에서 서브스음료 개수를 뺀 전체 음료수 갯수에 2000을 곱한다.

 

 

 

[리팩토링]

굳이 3항 연산자를 사용하지 않더라도 n인분 나누기 10을 했을때 10인분 미만인 경우 0이 도출된다.

return n * 12000 + (k - n/10) * 2000

 


[다른 풀이] 논란이 된 인기 폭팔 풀이

 

class Solution {
    public int solution(int n, int k) {
        int lambTotalPrice = totalPrice(Menu.LAMB, n);
        int drinkTotalPrice = totalPrice(Menu.DRINK, k);
        int discountPrice = discount(Menu.DRINK, n);

        int totalPay = lambTotalPrice + drinkTotalPrice - discountPrice;
        return totalPay;
    }

    private int totalPrice(Menu menu, int quantity) {
     return menu.getPrice() * quantity;   
    }

    private int discount(Menu menu, int lambQuantity) {
        // 양꼬치 10인분에 음료수 하나
        int point = lambQuantity / 10;

        return menu.getPrice() * point;
    }
}

enum Menu {

    LAMB("양꼬치", 12000),
    DRINK("음료수", 2000);

    private final String name;
    private final int price;

    Menu(String name, int price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public int getPrice() {
        return price;
    }
}

 

728x90
반응형

'코딩테스트 - 프로그래머스 > Lv. 0' 카테고리의 다른 글

[34] JAVA 배열 뒤집기  (0) 2023.11.16
[33] JAVA 편지  (0) 2023.11.16
[31] JAVA 배열의 평균 값  (0) 2023.11.16
[30] JAVA 짝수의 합  (0) 2023.11.16
[29] JAVA 각도기  (0) 2023.11.16