-
[Programmers] 양꼬치 (Javascript)개발/코딩 테스트 2022. 12. 8. 18:28
양꼬치 10인분을 먹으면 음료수를 하나씩 서비스로 주는 가게에서 양꼬치 n인분 (1인분 12000원), 음료수 k개(1개 당 2000원)를 먹었다면 지불해야 하는 총액을 계산하는 문제
[나의 풀이]
function solution(n, k) { return n * 12000 + k * 2000 - ( Math.trunc(n/10) ) * 2000; }
[다른 사람의 풀이]
function solution(n, k) { k-=~~(n/10); if (k < 0) k = 0; return n*12000+k*2000; }
double tilde를 활용하는 풀이가 눈에 띄었다. 역시 다른 사람 풀이 보기가 최고...!
[~ (tilde) 연산자 특징]
• 비트의 부정 연산자
• 32bit signed integer로 변환
• ~~ 실행 시 숫자의 정수 부분만 반환하게 되므로 Math.trunc() 함수와 동일하게 작동
const a = 5; // 00000000000000000000000000000101 const b = -3; // 11111111111111111111111111111101 console.log(~a); // 11111111111111111111111111111010 // expected output: -6 console.log(~b); // 00000000000000000000000000000010 // expected output: 2
[기타 정수 부분만 반환하는 연산자]
• | 0 ( ex: y = x | 0; )
• << 0 ( ex: y = x << 0; )
[참고]
https://stackoverflow.com/questions/5971645/what-is-the-double-tilde-operator-in-javascript
https://stackoverflow.com/questions/22277172/how-does-work-as-math-floor
https://stackoverflow.com/questions/13847053/difference-between-and-math-floor
https://www.measurethat.net/Benchmarks/Show/953/0/floor-vs-trunc-vs-bitwise-hacks-0-etc
'개발 > 코딩 테스트' 카테고리의 다른 글
Programmers - 배열 회전시키기 (Javascript) (0) 2022.12.14 Programmers - 문자 반복 출력하기 (Javascript) (0) 2022.12.13 [Programmers] 각도기 (Javascript) (0) 2022.12.08 [Programmers] 숫자 비교하기 (Javascript) (0) 2022.12.08 Programmers - 두 개 뽑아서 더하기 (Javascript) (0) 2021.02.06 댓글