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.`);
}