코딩테스트 day 2

SE5RI·2025년 12월 24일

코딩테스트 연습

목록 보기
2/8
post-thumbnail

두 수의 나눗셈

// 정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 solution 함수를 완성해주세요.

function solution(num1, num2) {
  var answer = 0;
  answer = parseInt((num1 / num2) * 1000);
  return answer;
}

숫자 비교하기

// 정수 num1과 num2가 매개변수로 주어집니다.두 수가 같으면 1 다르면 - 1을 retrun하도록 solution 함수를 완성해주세요.

function solution(num1, num2) {
  var answer = 0;
  if (num1 === num2) {
    answer = 1;
  } else {
    answer = -1;
  }
  return answer;
}

if 문 작성법
if (조건식) {    // statement1} 
else if(조건식) {    // statement2 } 
else {    // statement3 }

  • if 안에 있는 조건식이 참인 경우 해당하는 if문, else if문을 실행 한다.  
  • 조건문(if, else if)에 모두 해당하지 않으면 else에 있는 statement3 이 실행된다.  
  • else if에는 갯수 제한이 따로 없다.

분수의 덧셈

// 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

function solution(numer1, denom1, numer2, denom2) {
  const denom = denom1 * denom2;
  const numer = numer1 * denom2 + numer2 * denom1;

  // 최대공약수 구하기 (유클리드 호제법)
  function gcd(a, b) {
    if (b === 0) {
      return a;
    }
    return gcd(b, a % b);
  }
  const g = gcd(numer, denom);

  return [numer / g, denom / g];
}
  • 첫 번째 분수: numer1 / denom1
  • 두 번째 분수: numer2 / denom2
  • 두 분수를 더한 뒤 기약분수로 만들어 [분자, 분모] 형태의 배열을 반환한다.

문제풀이

  1. 분수를 더하기 위해 통분
  2. 더한 결과를 최대공약수(GCD)로 나누어 기약분수로 변환
  3. 결과를 배열로 반환

분수 덧셈 (통분하기)

const denom = denom1 * denom2;
const numer = numer1 * denom2 + numer2 * denom1;

최대공약수(GCD) 구하기 — 유클리드 호제법

  • 최대공약수(GCD): 두 수를 동시에 나눌 수 있는 가장 큰 수
  • 기약분수를 만들기 위해 반드시 필요

유클리드 호제법 핵심 원리

gcd(a, b) =gcd(b, a% b)
  • b === 0 이면 → a가 최대공약수
  • 그렇지 않으면 (a, b)(b, a % b)로 바꿔 반복

GCD 함수 코드

functiongcd(a, b) {
if (b ===0) {
return a;
  }
return gcd(b, a % b);
}

GCD 동작 예시

gcd(12, 8) 실행 과정:
1. gcd(12, 8)gcd(8, 4)
2. gcd(8, 4)gcd(4, 0)

  1. b === 04 반환

기약분수로 만들기

const g =gcd(numer, denom);
return [numer / g, denom / g];
  • 분자와 분모를 최대공약수 g로 나누면 기약분수 완성
  • 배열 형태로 반환

배열 두 배로 만들기

// 정수 배열 numbers가 매개변수로 주어집니다.numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

function solution(numbers) {
  return numbers.map((num) => num * 2);
}

map()

map()배열의 각 요소를 하나씩 변환(transform) 하여
새로운 배열을 만들어 반환하는 메서드이다.


기본 특징

  • 원본 배열을 변경하지 않는다
  • 항상 새로운 배열을 반환한다
  • 반환값이 없으면 각 요소가 undefined가 된다
  • 반환된 배열의 길이는 원본과 동일
profile
front-end study

0개의 댓글