문제 상황
숫자 n을 매개변수로 받아 다음 조건에 따라 변환하는 자바스크립트 함수를 작성해야 합니다.
- 숫자가 짝수이면 → 2진수(binary)로 변환
- 숫자가 홀수이면 → 16진수(hexadecimal)로 변환
이 문제는 Number.prototype.toString() 메서드가 지원하는 진법(radix) 인자를 활용하면 아주 간단하게 해결할 수 있습니다. 핵심은 나머지 연산자(%)로 홀짝 여부를 판별한 뒤, 조건에 맞는 진법으로 변환하는 것입니다.
코드 예시
const num = 1457;
const conditionalConvert = (num = 1) => {
const isEven = num % 2 === 0;
const toBinary = () => num.toString(2);
const toHexadecimal = () => num.toString(16);
return isEven
? toBinary()
: toHexadecimal();
};
console.log(conditionalConvert(num));코드 동작 원리
- isEven: 나머지 연산자(
%)를 사용해 숫자를 2로 나눈 나머지가 0인지 확인함으로써 짝수 여부를 판별합니다. - toBinary():
toString(2)를 호출하여 숫자를 2진수 문자열로 변환합니다. - toHexadecimal():
toString(16)을 호출하여 숫자를 16진수 문자열로 변환합니다. - 삼항 연산자를 통해
isEven이 true이면 2진수 변환 결과를, false이면 16진수 변환 결과를 반환합니다.
실행 결과
위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.
5b1
예시에서 사용한 숫자 1457은 홀수이므로 16진수로 변환되어 5b1이 출력됩니다. 만약 짝수(예: 10)를 입력했다면 2진수인 1010이 반환됩니다.
이처럼 toString() 메서드에 진법 값을 인자로 전달하면 별도의 변환 로직 없이도 2진수부터 36진수까지 손쉽게 변환할 수 있습니다.