It,develop
[알고리즘] 풀이 방식 모음
Yujzu
2025. 2. 4. 14:57
1. 이진법 변경 코드
- 내장 메서드 사용
function decimalToBinary(n) {
return n.toString(2);
}
console.log(decimalToBinary(10)); // "1010"
console.log(decimalToBinary(255)); // "11111111"
2. 틸드 (tilde, ~)
= 비트 연산자(Bitwise NOT)
console.log(~5); // -6 (5의 보수)
console.log(~-1); // 0 (-1의 보수는 0)
- ~n은 비트 NOT 연산자로, -(n + 1)의 값을 반환함.
- ~x가 0이 되는 경우, x는 -1임
3. 이중 틸드 ( ~~ )
: Math.floor(x) 과 같은 효과를 내는 정수 변환(truncation) 기법
console.log(~~(5.7)); // 5
console.log(~~(-5.7)); // -5
console.log(Math.floor(5.7)); // 5
console.log(Math.floor(-5.7)); // -6 (차이 있음!)
4. 제곱근이 정수면 약수의 개수가 홀수다
- 제곱수가 아닌 수 → 약수들이 전부 짝을 이루므로 약수 개수는 짝수 (ex. 12-> 1,2,3,4,6,12 / 6개)
- 제곱수인 경우 → 가운데에 짝이 없는 약수(제곱근)가 하나 추가되므로 약수 개수는 홀수 (ex. 16-> 1,2,4,8,16 / 5개)
5. 0 < angle < 90
JS 방식 => 0 < angle && angle < 90
6. 유클리드 호제법
최대공약수(GCD, Greatest Common Divisor)를 찾는 JavaScript 코드
[방법]
1. 두 수 a와 b의 최대공약수는 b와 a % b의 최대공약수와 같다.
2. 이 과정을 b가 0이 될 때까지 반복하면 a가 최대공약수가 된다.
function gcd(a, b) {
while (b !== 0) {
let temp = b;
b = a % b;
a = temp;
}
return a;
}
// ✅ 사용 예제
console.log(gcd(48, 18)); // ➝ 6
console.log(gcd(56, 98)); // ➝ 14
console.log(gcd(101, 103)); // ➝ 1 (서로소)
7. object에서 n in cache 로 키값 여부 판단
: n이라는 값이 cache 객체의 속성으로 존재하는지 확인하는 구문
const cache = {
1: 'a',
2: 'b',
3: 'c'
};
let n = 2;
if (n in cache) {
console.log(`${n} is in cache.`);
} else {
console.log(`${n} is not in cache.`);
}