🔍 문제

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


⌨️ 입출력 예시

nkresult
103124,000
646768,000

🙋‍♀️ 내가 푼 방법

function solution(n, k) {
    let answer = 0;
    let food = n;
    let drink = k;
    let service = drink - (Math.floor(food / 10)); 
    answer = food * 12000 + service * 2000;
    return answer;
}

문제 읽었을때 쉽겠네 하고 덤볐다가 은근 안풀렸지 모얌..?ㅎ
다른 사람의 풀이 보다가 신기한 문법 발견했다

👥 다른 사람이 푼 방법

  • Tilt 틸트 '~'
    - 내부적으로 32bit 정수로 변환 후 NOT 연산자 실행한다.
    • -(n+1) 과 같다는 성질 이용
    • ex) ~9 === -10
  • 틸트 2개 사용하여 비트 잘라내기도 가능하다.
    - Math.floor()와 동일하게 적용된다.(음수에서는 결과값이 달라질 수 있음!!)
    • ex) ~~52.3 === 52
function solution(n, k) {
    k-=~~(n/10);
    if (k < 0) k = 0;
    return n*12000+k*2000;
}

참고자료
https://oper0116.tistory.com/40
https://school.programmers.co.kr/learn/courses/30/lessons/120830/solution_groups?language=javascript

2개의 댓글

comment-user-thumbnail
2023년 10월 21일

굿

1개의 답글