본문 바로가기
algorithm

[프로그래머스]양꼬치 - java, python

by skysline 2023. 2. 23.
반응형

`양꼬치`

문제 설명

머쓱이네 양꼬치 가게는 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원입니다.

java code

public class 양꼬치 {
	public int solution(int n, int k ) {
		int answer = 0;  // 최종 결과값을 저장하는 변수
		int money = 12000;  // 한 개의 양꼬치 가격
		int bev = 2000;  // 한 병의 음료수 가격
		for (int i = 0; i <= n; i++) {  // 0부터 n까지의 양꼬치 개수를 순회
			int moneys = i*money;  // 양꼬치 가격 계산
			if(i%10==0 && i!=0) {  // 10개당 한 병 무료 이벤트 적용
				k--;
			}
			for (int j = 0; j <= k; j++) {  // 0부터 k까지의 음료수 개수를 순회
				int bevs = j*bev;  // 음료수 가격 계산
				int total = moneys + bevs;  // 양꼬치와 음료수의 총 가격 계산
				if(total > answer) {  // 현재까지의 최대 가격보다 더 큰 가격이면 갱신
					answer = total;
				}
			}
		}
		
		return answer;  // 결과값 반환
	}
	
	public static void main(String[] args) {
		양꼬치 a = new 양꼬치();  // 양꼬치 객체 생성
		System.out.println(a.solution(64,6));  // n=64, k=6인 경우의 결과 출력
	}
}
  1. for 루프를 사용해서 0부터 n까지의 양꼬치 개수를 1씩 증가시키면서 가격을 계산합니다.
  2. moneys 변수에 현재까지의 양꼬치 가격을 저장합니다.
  3. 양꼬치를 10개 주문할 때마다 한 병의 음료수를 무료로 받을 수 있는 이벤트를 적용합니다. 따라서 i가 10의 배수이면서 0이 아닌 경우에는 k를 1 감소시킵니다.
  4. 내부 for 루프를 사용해서 0부터 k까지의 음료수 개수를 1씩 증가시키면서 가격을 계산합니다.
  5. bevs 변수에 현재까지의 음료수 가격을 저장하고, total 변수에 현재까지의 총 가격을 저장합니다.
  6. 현재까지의 최대 가격보다 더 큰 가격이면 answer 변수를 갱신합니다.

 

pyrhon code

def solution(n,k):
    answer = 0
    money =12000
    bev = 2000
    for i in range(n+1):
        moneys = i*money
        if i%10==0 and i != 0 :
            k -=1
        for j in range(k+1):
            bevs = j*bev
            answer = moneys+bevs
    return answer

반응형

댓글