문제 설명

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


제한사항

  • 0 < n < 1,000
  • n / 10 ≤ k < 1,000
  • 서비스로 받은 음료수는 모두 마십니다.

입출력 예

nkresult
103124,000
646768,000

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

✍ SOLUTION1

const solution = (n, k) => n*2000 + ((k-Math.floor(n/10))*2000);

/* 내가 처음 작성했던 코드이다. 10인분마다 음료 한병이 서비스로 주어지니 n/10을해서 소수점을 내려주는
Math.floor 방식을 선택했다. ES6에서 도입된 화살표 함수로 작성한 코드이다. 리턴이 하나면 중괄호와 
리턴을 생략하여 간단하게 표기가 가능하다. */
funcion solution(n, k) {
	return n*2000 + ((k-Math.floor(n/10)*2000);
}

/* 위의 화살표 함수와 같은 방식이다. ES6 이전에 사용했던 방식이고 요즘은 화살표 함수를 
많이 사용한다고 알고있다. */

✍ SOLUTION2

const solution = (n, k) => n*12000 + ((k-~~(n/10))*2000);

/* SOLUTION1 코드를 작성하면서 Math.floor 대신 틸트연산자(~~)를 이용해 보면 좋을거 같아서
SOLUTION2에 작성해 보았다. 틸트 연산자는 음수가 아닐경우 Math.floor와 동일한 결과를 나타내준다. */

✍ SOLUTION3

function solution(n, k) {
    let ramb = n*12000;
    let drink = k*2000;
    return ramb+drink-parseInt(n/10)*2000;
}

/* 다른분이 작성한 코드를 가져와봤다. parseInt를 정수로 강제 형변환 해주는 방식으로 진행한것 같다. */

출처 : 프로그래머스 스쿨 | 코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/120830

0개의 댓글