230321_Algorithm

majungha·2023년 4월 27일
1

알고리즘

목록 보기
6/71

오늘의 알고리즘 👍

📝 1. 가운데 글자 가져오기


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

▷ 입출력 예

solution("abcde") // 'c'
solution("qwer") // 'we'

▷ 내 풀이

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

▷ 수업 풀이

function solution(s) {
  const center = Math.floor(s.length / 2);
  let answer = s[center];
  if (s.length % 2 === 0) {
    // 짝수일 경우 가운데 2글자를 가져온다
    answer = s[center - 1] + answer;
  }
  return answer;
}

▷ 삼항연산자 사용 풀이

function solution(s) {
  const center = Math.floor(s.length / 2);
  let answer = s[center];
  return s.length % 2 !== 0 ? s[center] : s.slice(center - 1, center + 1);
}

📝 2. 서울에서 김서방 찾기


  • String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요.
  • seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

▷ 입출력 예

solution(["Jane", "Kim"]) // "김서방은 1에 있다"

▷ 내 풀이

function solution(seoul) {
  for (let i = 0; i < seoul.length; i++) {
    if (seoul[i] === "Kim") {
      return `김서방은 ${i}에 있다`;
    }
  }
}

▷ indexOf 메서드 사용 풀이

function solution(seoul) {
  const x = seoul.indexOf("Kim");
  return `김서방은 ${x}에 있다`;
}

📝 3. 문자열 다루기 기본


  • 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요.
  • 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

▷ 입출력 예

solution("a234") // false
solution("1234") // true

▷ 해결 못함 ❌

▷ 수업 풀이

function solution(s) {
  let answer = true;
  if (s.length !== 4 && s.length !== 6) {
    answer = false;
  }
  for (let i = 0; i < s.length; i++) {
    if (isNaN(s[i]) === true) {
      answer = false;
    }
  }
  return answer;
}

▷ filter메서드 사용 풀이

function solution(s) {
  if (s.length !== 4 && s.length !== 6) {
    return false;
  }
  const answer = s.split("").filter((num) => {
    return !isNaN(num);
    // if(isNaN(num) === false){
    //     return true
    // }
  });
  return s.length === answer.length;
}

📝 4. 약수의 합


  • 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

▷ 입출력 예

solution(12) // 28
solution(5) // 6

▷ 내 풀이

function solution(n) {
  let answer = 0;
  for (let i = 0; i <= n; i++) {
    if (n % i === 0) {
      answer = answer + i;
    }
  }
  return answer;
}

▷ newArray메서드 사용 풀이

function solution(n) {
  return new Array(n).fill(1).reduce((acc, cur, i) => {
    const num = cur + i;
    return acc + (n % num === 0 ? num : 0);
  }, 0);
}

출처: 프로그래머스
출처: 코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글