생각/javascript

알고리즘 연습 1-10번

kyunghoonk00k 2022. 9. 24. 21:17
반응형
// 1. 직사각형 별찍기 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

 

process.stdin.setEncoding("utf8");
process.stdin.on("data", (data) => {
  const n = data.split(" ");
  const a = Number(n[0]),
    b = Number(n[1]);
  for (let i = 0; i < b; i++) {
    let arr = "";
    for (let j = 0; j < a; j++) {
      arr += "*";
    }
    console.log(arr);
  }
});

 

// const n = data.split(" ");
// const a = Number(n[0]),
//   b = Number(n[1]);
// const row = "*".repeat(a);
// for (let i = 0; i < b; i++) {
//   console.log(row);
// }
// repeat 사용하기

 

// 2. 짝수와 홀수 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

 

function solution(num) {
  let answer = "";
  if (num % 2 === 0) {
    return (answer = "Even");
  } else {
    return (answer = "Odd");
  }
}

 

function solution(num) {
  return num % 2 === 0 ? "Even" : "Odd";
}

 

// 3. 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

 

function solu(s) {
  var answer = "";
  if (s.length % 2 == 0) {
    answer = s[s.length / 2 - 1] + s[s.length / 2];
  } else {
    answer = s[Math.floor(s.length / 2)];
  }

 

  return answer;
}

 

console.log(solu("qwertyu"));

 

// 012345
// qwerty

 

//
// 0123456
// qwertyu

 

// 0123456789
// abcdefghijk

 

// 다른 풀이
// function solution(s) {
//   return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
// }

 

// substr = 특정자리의 인덱스 값에서 문자를 추출 Math.ceil = 올림 , 단어의 길이가 나눴을때 나머지가 0 즉 짝수라면 2번째자리를 아니라면 1번째자리를 리턴

 

// console.log(solution("qwert"));

 

// 4. 두 정수 사이의 합 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
function solution(a, b) {
  var answer = 0;

 

  let min = Math.min(a, b);
  // 두 숫자중 적은 것
  let max = Math.max(a, b);
  // 두 숫자중 큰 것
  for (let i = min; i <= max; i++) {
    answer += i;
  }

 

  return answer;
}

 

// function adder(a, b) {
//   var result = 0;

 

//   return ((a + b) * (Math.abs(b - a) + 1)) / 2;
// }

 

// 다른 사람 풀이 인데 Math.abs |절대값| 와... 등차수열의 합을 구할 때는 첫항과 마지막항을 더해서 항수를 곱하고 2로 나눈다.

 

// 5. 문자열을 정수로 바꾸기 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
function solution(s) {
  return s / 1;
}

 

// 6. 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

 

function solution(numbers) {
  var answer = 0;
  for (let i = 0; i <= 9; i++) {
    if (!numbers.includes(i)) answer += i; // 논리연산자 !(numbers)가 i를 포함하지 않는다면, answer에 그 i 값들을 더해라
  }
  return answer;
}

 

// 7. 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

 

function solution(absolutes, signs) {
  let answer = 0;
  for (let i = 0; i < absolutes.length; i++) {
    if (signs[i] === true) {
      answer += absolutes[i];
    } else {
      answer -= absolutes[i];
    }
  }
  return answer;
}

 

// 8. 평균구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

 

function solution(arr) {
  var answer = 0;
  sum = 0;

 

  for (i = 0; i < arr.length; i++) {
    sum += arr[i];
  }
  answer = sum / arr.length;
  return answer;
}

 

// 이렇게도 풉니다.
function solution(arr) {
  return arr.reduce((sum, current) => sum + current) / arr.length;
}

 

// reduce란
const arr = [1, 2, 3, 4, 5, 6, 0.5];

 

arr.reduce((a, b) => {
  return a + b;
});

 

// 9. 핸드폰 번호 가리기 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

 

function solution(phone_number) {
  answer = "*".repeat(phone_number.length - 4) + phone_number.slice(-4);

 

  return answer;
}

 

// 10. 행렬의 덧셈 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
function solution(arr1, arr2) {
  let answer = [[]];
  for (let i = 0; i < arr1.length; i++) {
    answer[i] = [];
    for (let j = 0; j < arr1[i].length; j++) {
      answer[i].push(arr1[i][j] + arr2[i][j]);
    }
  }
  return answer;
}

 

console.log(
  solution(
    [
      [1, 2],
      [2, 3],
    ],
    [
      [3, 4],
      [5, 6],
    ]
  )
);

 

 

 

반응형

'생각 > javascript' 카테고리의 다른 글

혼공스 피라미드 , 윤년  (1) 2022.09.24
알고리즘 연습 21-28번  (1) 2022.09.24
알고리즘 연습 11-20번  (1) 2022.09.24
reduce함수  (0) 2022.09.24
JavaScript 정리  (3) 2022.09.23