프로그래머스 코딩 테스트 연습 문제 Lv.0 JS - 5문제(배열의 유사도, 문자열 계산하기, 가장 큰 수 찾기, 편지, 약수 구하기, 한 번만 등장한 문자)

찐새·2023년 4월 5일
0

코딩테스트

목록 보기
24/53
post-thumbnail

배열의 유사도

https://school.programmers.co.kr/learn/courses/30/lessons/120903

function solution(s1, s2) {
    return s1.filter((s)=>s2.includes(s)).length;
}
  • s1의 요소가 s2에 있는 것만 필터링하여 길이 반환.

문자열 계산하기

https://school.programmers.co.kr/learn/courses/30/lessons/120902

function solution(my_string) {
    return new Function('return ' + my_string)();
}

가장 큰 수 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/120899

function solution(array) {
    return [Math.max(...array), array.indexOf(Math.max(...array))];
}
  • Math.max로 최댓값 찾고, 그 값의 인덱스 찾음.
  • max의 인자로 배열이 들어가지 않기 때문에 spread로 풀어냈다.

편지

https://school.programmers.co.kr/learn/courses/30/lessons/120898

function solution(message) {
    return message.length * 2;
}
  • ...

약수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/120897

function solution(n) {
    return [...Array(n+1).keys()].filter((m)=>n%m===0)
}
  • n 만큼 배열 생성 후 나눠 떨어지는 것만 필터링

한 번만 등장한 문자

https://school.programmers.co.kr/learn/courses/30/lessons/120896

function solution(s) {
  let answer = [];
  const sArr = s.split("");
  sArr.forEach((v) => {
    if (sArr.filter((x) => x === v).length === 1) answer.push(v);
  });
  return answer.sort().join("");
}
  • 문자열을 배열로 변환 후 특정 요소로 필터링한 배열의 길이가 1이면 answer에 추가.
  • 정렬 후 문자열로 재조합.
function solution(s) {
  let answer = [];
  for (const v of s) if (s.indexOf(v) === s.lastIndexOf(v)) answer.push(v);
  return answer.sort().join("");
}
  • 문자열 순회 시 for ... of 문 가능.
  • 앞에서부터 인덱스 찾는 indexOf, 뒤에서부터 찾는 lastIndexOf를 활용해 값이 같으면 1개만 있는 것.
profile
프론트엔드 개발자가 되고 싶다

0개의 댓글