프로그래머스

프로그래머스 10일차

ture403 2023. 5. 31. 22:34

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
반응형

숨어있는 숫자의 덧셈 (1)

문제

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

 

정답풀이

function solution(my_string) {
  const num = my_string.split("");
  let result = 0;
  
  for(let i = 0; i < num.length; i++){
    //하나하나 잘렸을 때 number면 result에 담아서 더해주는 코드
    //split하면 배열로 만들어지니 forEach로 넣어도 될것같음!
    if(Number(num[i])) result += Number(num[i])
  }
  return result
}

이 함수는 하나의 매개변수 my_string을 받습니다.

함수는 my_string을 문자 단위로 분할하여 배열로 만든 후 변수 num에 할당합니다. 그리고 결과를 저장하기 위한 변수 result를 0으로 초기화합니다.

다음으로, num 배열의 각 요소를 순회하는 반복문을 실행합니다. 반복문에서는 현재 요소가 숫자인지 확인하고, 숫자라면 해당 숫자를 result에 더합니다.

마지막으로, result 값을 반환합니다. 이 값은 my_string에 포함된 숫자들을 모두 더한 결과를 나타냅니다.

 

문자열안에 문자열

문제

문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

 

문제풀이

function solution(str1, str2) {
    return str1.includes(str2) ? 1 : 2;
}

 

이 함수는 두 개의 매개변수 str1과 str2를 받습니다.

함수는 str1이 str2를 포함하고 있는지 확인합니다. str1.includes(str2)를 사용하여 str1에 str2가 포함되어 있는지를 검사합니다. 만약 포함되어 있다면 1을 반환하고, 그렇지 않으면 2를 반환합니다.

이 함수의 반환 값은 str1에 str2가 포함되어 있는지 여부에 따라 결정됩니다. str1이 str2를 포함하고 있을 경우 1을 반환하며, 그렇지 않을 경우 2를 반환합니다.

제곱수 판별하기

문제

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

 

정답풀이

function solution(n) {
    let arr = [];
    for(let i = 1; i <= n; i++) if(n % i === 0) arr.push(n / i);
    return arr.length % 2 ? 1 : 2;
}

함수는 빈 배열 arr을 선언합니다. 그리고 1부터 n까지 반복문을 실행하면서 n을 현재 숫자로 나누었을 때 나머지가 0인지 확인합니다. 나머지가 0이라면 현재 숫자는 n의 약수이므로 arr에 n을 현재 숫자로 나눈 값을 추가합니다.

마지막으로, arr의 길이가 홀수인지 짝수인지 확인하여 반환합니다. arr.length를 2로 나눈 나머지가 1이라면 홀수이므로 1을 반환하고, 그렇지 않으면 짝수이므로 2를 반환합니다.

이 함수의 반환 값은 n의 약수의 개수가 홀수인지 짝수인지에 따라 결정됩니다. 약수의 개수가 홀수일 경우 1을 반환하며, 짝수일 경우 2를 반환합니다.

 

개미 군단

문제

개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.

정답풀이

function solution(hp) {
  let general = 5;
  let solider = 3;
  let worker = 1;
  let number = 0;
  
  // first
  number += Math.floor(hp / general);
  hp = Math.ceil(hp % general);
  
  // second
  number += Math.floor(hp / solider);
  hp = Math.ceil(hp % solider);
  
  // last
  if (hp < 1) return number;
  number += Math.floor(hp / worker);
  
  return number;
}

함수는 세 가지 유형의 유닛(general, solider, worker)에 대한 값을 초기화하고, 결과를 저장하기 위한 변수 number를 0으로 초기화합니다.

첫 번째 단계에서는 hp를 general로 나눈 몫을 number에 더합니다. 그리고 hp를 general로 나눈 나머지를 올림한 값으로 업데이트합니다.

두 번째 단계에서는 업데이트된 hp를 solider로 나눈 몫을 number에 더합니다. 다시 hp를 solider로 나눈 나머지를 올림한 값으로 업데이트합니다.

마지막 단계에서는 hp가 1보다 작으면 number를 반환합니다. 그렇지 않은 경우, hp를 worker로 나눈 몫을 number에 더합니다.

최종적으로, number 값을 반환합니다. 이 값은 hp를 각 유닛으로 나눈 몫의 합을 나타냅니다.