Programmers/Level 1

<22.11.23>프로그래머스 Level 1 문제 풀이 #04

mayberry 2022. 11. 23. 08:34

Programmers Level 1 문제 풀이 #04 : 22-11-23

 

Programmers Level 1 문제 풀이 #04 : 22-11-23

 

 

4-1) 음양 더하기

 

문제)

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

 

내가 작성한 답안)

const solution = (absolutes, signs) => {
  //22-11-23
  const yinYang = absolutes.map((v, i) => signs[i] ? v : -v)
                           .reduce((acc, cur) => acc + cur);
  return yinYang;
}

 

 

4-2) 없는 숫자 더하기

 

문제)

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

 

내가 작성한 답안)

const solution = (numbers) => {
  //22-11-23
  return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].filter(it => !(numbers.includes(it)))
                                       .reduce((acc, cur) => acc + cur)
}

 

 

4-3) 가운데 글자 가져오기

 

문제)

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

 

내가 작성한 답안)

const solution = (s) => {
  //22-11-23
  return s.length % 2 ? s[Math.floor(s.length / 2)] : s.slice((s.length / 2) - 1, (s.length / 2) + 1);
}

 

 

4-4) 내적

 

문제)

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)

 

내가 작성한 답안)

const solution = (a, b) => {
  //22-11-23
  return a.reduce((acc, _, idx, arr) => acc + (arr[idx] * b[idx]), 0)
}

 

 

4-5) 문자열 내림차순으로 정렬하기

 

문제)

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

 

내가 작성한 답안)

const solution = (s) => {
  //22-11-23
  return [...s].map(it => it.charCodeAt(0))
               .sort((a, b) => b - a)
               .map(v => String.fromCharCode(v))
               .join('');
}