코딩테스트

20250320

불닭냠냠 2025. 3. 20. 18:19

며칠동안 면접준비를 하느라 코딩테스트를 못했네요...ㅎ

다시 하루하루 꾸준히 작성해야겠습니다!


카펫

// 카펫
function solution(brown, yellow) {
  const total = brown + yellow;
  let array = [];
  for (let i = 1; i <= total; i++) {
    if (total % i === 0) {
      let width = total / i;
      let height = i;
      array.push([width, height]);
    }
  }
  for (let [width, height] of array) {
    if ((width - 2) * (height - 2) === yellow) {
      return [width, height];
    }
  }
}

// 1. 전체 넓이에서 약수를 구한다.
// 2. 너비, 높이 -2를 한 후 곱한 것이 yellow의 개수와 같다면
// 3. 그 값을 return

 

유한 소수 판별하기

function solution(a, b) {
  //최대 공약수 함수
  function gcd(x, y) {
    while (y !== 0) {
      let temp = y;
      y = x % y;
      x = temp;
    }
    return x;
  }

  let gcdValue = gcd(a, b);
  let denominator = b / gcdValue;

  while (denominator % 2 === 0) {
    denominator /= 2;
  }
  while (denominator % 5 === 0) {
    denominator /= 5;
  }

  return denominator === 1 ? 1 : 2;
}

 

순서 바꾸기

function solution(num_list, n) {
  var answer = [];
  for (let i = n; i < num_list.length; i++) {
    answer.push(num_list[i]);
  }
  for (let j = 0; j < n; j++) {
    answer.push(num_list[j]);
  }
  return answer;
}

// 다른 사람 풀이
function solution(num_list, n) {
  num_list.unshift(...num_list.splice(n));
  return num_list;
}

 

홀수 vs 짝수

// 홀수 vs 짝수
function solution(num_list) {
  let evenSum = 0;
  let oddSum = 0;
  for (let i = 0; i < num_list.length; i += 2) {
    evenSum += num_list[i];
  }

  for (let j = 1; j < num_list.length; j += 2) {
    oddSum += num_list[j];
  }
  return evenSum > oddSum ? evenSum : oddSum;
}

// 다른 사람 풀이
function solution(num_list) {
  return Math.max(
    num_list.reduce((p, c, idx) => p + (idx % 2 == 0 ? c : 0), 0),
    num_list.reduce((p, c, idx) => p + (idx % 2 != 0 ? c : 0), 0)
  );
}

 

카운트 다운

// 카운트 다운
function solution(start_num, end_num) {
  var answer = [];
  for (let i = start_num; i >= end_num; i--) {
    answer.push(i);
  }
  return answer;
}

 

'코딩테스트' 카테고리의 다른 글

20250322  (0) 2025.03.22
20250321  (0) 2025.03.21
20250316  (0) 2025.03.16
20250315  (0) 2025.03.16
20250314  (2) 2025.03.15