FRONT/JAVASCRIPT

[Javascript] 인프런 알고리즘 기본 문제 1~7

연듀 2022. 3. 14. 14:26

인프런 - 자바스크립트 알고리즘 문제풀이(코딩테스트 대비)

 

 

1. 세 수 중 최소값

 

function solution(a, b, c) {
  let answer;

  if (a < b) answer = a;
  else answer = b;
  if (c < answer) answer = c;

  return answer;
}

console.log(solution(6, 5, 11));

 

 

2. 삼각형 판별하기

 

내 풀이

function solution(a, b, c) {
  let answer = "YES",
    max;

  if (a > b) max = a;
  else max = b;

  if (c > max) {
    // c가 가장 긴변일 때

    max = c;
    if (c >= a + b) {
      answer = "NO";
    }
  } else {
    // c가 가장 긴 변이 아닐 때
    if (max == a && b + c <= a) {
      // a가 가장 긴변 일 때
      answer = "NO";
    }
    if (max == b && a + c <= b) {
      //b가 가장 긴변 일 때
      answer = "NO";
    }
  }
  return answer;
}

console.log(solution(6, 7, 11));

 

강사님 풀이

 

function solution(a, b, c) {
  let answer = "YES",
    max;
  let sum = a + b + c;
  if (a > b) max = a;
  else max = b;
  if (c > max) max = c;
  if (sum - max <= max) answer = "NO";
  return answer;
}

console.log(solution(6, 7, 11));

sum - max 로 최댓값을 제외한 나머지 변의 길이를 구하고 max와 비교한다. 

 

 

3. 연필개수

 

function solution(n) {
  let answer = Math.ceil(n / 12);
  return answer;
}

console.log(solution(178));

 

 

4. 1부터 N까지의 합

function solution(n) {
  let answer = 0;

  for (let i = 1; i <= n; i++) {
    answer += i;
  }

  return answer;
}

console.log(solution(10));

 

5. 최솟값 구하기

 

function solution(arr) {
  let answer,
    min = arr[0];

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < min) min = arr[i];
  }
  answer = min;
  return answer;
}

let arr = [5, 7, 1, 3, 2, 9, 11];
console.log(solution(arr));

 

min = Number.Max_SAFE_INTEGER;

으로 최솟값을 안전한 최대 정수값으로 세팅해놓고 시작해도 된다. 

 

 

내장 함수로 구하는 방법

function solution(arr) {
  let answer = Math.min(...arr);
  // or 
  // let answer = Math.min.apply(null, arr);
  return answer;
}

let arr = [5, 7, 1, 3, 2, 9, 11];
console.log(solution(arr));

 

 

6. 홀수

function solution(arr) {
  let answer = [];
  let sum = 0,
    min = Number.MAX_SAFE_INTEGER;

  for (let x of arr) {
    if (x % 2 === 1) {
      sum += x;
      if (x < min) min = x;
    }
  }
  answer.push(sum);
  answer.push(min);
  return answer;
}

let arr = [12, 77, 38, 41, 53, 92, 85];
console.log(solution(arr));

 

7. 10부제

function solution(day, arr) {
  let answer = 0;

  for (let i of arr) {
    if (i % 10 === day) answer++;
  }
  return answer;
}

arr = [25, 23, 11, 47, 53, 17, 33];
console.log(solution(3, arr));