내일배움캠프 Node.js 본캠프 14일차

김선우·2024년 8월 23일
post-thumbnail

알고리즘 문제 풀어보기

음양 더하기

문제 설명

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

제한사항

absolutes의 길이는 1 이상 1,000 이하입니다.
absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
signs의 길이는 absolutes의 길이와 같습니다.
signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

작성 코드

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

작성 이유

반복문을 돌려 absolutes의 정수들을 모두 확인, absolutes의 길이와 signs의 길이가 같으므로 signs[i]가 참일때 answer에 +, 거짓일때 answer에 -

핸드폰 번호 가리기

문제 설명

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

제한 조건

phone_number는 길이 4 이상, 20이하인 문자열입니다.

작성 코드

function solution(phone_number) {
  var answer = "";
  var arr = phone_number.length;
  for (i = 0; i < arr; i++) {
    if (i >= arr - 4) answer += phone_number[i];
    else answer += "*";
  }
  return answer;
}

작성 이유

arr의 길이만큼 반복하는 반복문을 만들어주고 i값이 arr-4보다 크거나 같으면 phone_number의 배열값을, 그렇지 않으면 *을 넣어줌.

없는 숫자 더하기

문제 설명

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

제한사항

1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.

작성 코드

function solution(numbers) {
  var answer = 0;
  var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
  var re1 = 0;
  var re2 = 0;
  for (i = 0; i < arr.length; i++) {
    re1 += arr[i];
  }
  for (i = 0; i < numbers.length; i++) {
    re2 += numbers[i];
  }
  answer = re1 - re2;
  return answer;
}

작성 이유

0~9의 원소를 가진 arr 배열 생성, arr과 numbers를 각각 합해주고 뺀값을 반환.

다른 풀이

코드가 너무 더럽게 풀이가 된 것 같아서 다른 방법을 찾아봤다.

function solution(numbers) {
    
    let answer = 0;
    for (let i=1; i<=9; i++){
        if (!numbers.includes(i)) {
            answer += i
        }
    }
    return answer
}

.includes는 배열에 포함되어있는지 체크하는 메소드라고 한다. 그럼 1~9까지 i값이 바뀌면서 numbers안에 포함되어있지 않은 i값을 더해주면 같은 결과가 나오게된다.

제일 작은 수 제거하기

문제 설명

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

제한 조건

arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

작성 코드

function solution(arr) {
  var answer = [];
  if (arr.length <= 1) {
    answer = [-1];
  } else {
    arr.splice(arr.indexOf(Math.min(...arr)), 1);
    answer = arr;
  }
  return answer;
}

작성 이유

arr의 길이가 1이하이면 answer은 [-1]반환, 그 외에는 arr의 최소값을 구하고 그 값의 index를 구한 후 도려내준다(splice해준다.).

가운데 글자 가져오기

문제 설명

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

제한사항

s는 길이가 1 이상, 100이하인 스트링입니다.

작성 코드

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

작성 이유

s가 홀수일때는 s.length를 2로 나눈값의 내림값(배열은 0부터 시작하기때문.)
s가 짝수일때는 s.length를 2로 나누고 -1한 값과 2로 나눈값을 합해줌.

개인 과제 - CH 2 Rogue like JAVASCRIPT!

Player클래스에 Monster클래스의 hp를 받아와서 몬스터가 데미지를 받는 걸 구현하는데 시간을 너무 많이 썻다. => player의 attack의 파라미터를 monster = new Monster(), damage를 입력해주는 것으로 monster는 Monster클래스의 역할을 할 수 있게 되었고, damage에 플레이어의 공격력을 입력해주는 것으로 해결했다.

다음시간엔 남은 필수 기능들을 빠르게 풀어보고 도전 기능들도 해보고싶다.

0개의 댓글