22.9.27

커피 내리는 그냥 사람·2022년 9월 27일
0

항해99

목록 보기
18/108

챌린지스 챌린지

41. 약수의 개수와 덧셈

function solution(left, right) {
  var answer = 0;
  let arr = []
  // 일단 array를 만듦
  for(let i = left; i <=right; ++i){
      arr.push(i)
  }
    // python에는 range가 있지만 js는 없으니 이렇게 만들기!
  for (let j = 0; j < arr.length; j++){
      let count = 0;
      // 약수의 갯수
      for (let k = 1; k <= arr[j]; k++){
          // 각 요소의 약수를 일단 구해야하므로 이중 for문으로 풀어준다. -> 그래서 1부터 시작한다.
          if(arr[j] % k === 0) {
              count += 1
              // 약수가 되면 카운트를 늘려준다.
          }

      }
      
      // 이렇게 각각의 약수가 구해진다. 그리고 세로 정렬이 되는데 따로 temp=[]할 필요 없이 바로 구해주면 된다.
      if(count % 2 === 0) {
          arr[j] = arr[j]
      }else{
          arr[j] = -1 * arr[j]
          // 홀수면 -1 곱해주고 짝수면 그대로 간다.
      }
  }

  answer = arr.reduce((a,b) => a+b, 0)
    // 이후 원래 만든 arr의 요소들을 더하면 끝.


  return answer;
}

쉽진 않았지만 구글링 열심히 해서 풀었다. 갯수까지 뽑아내는게 관건.

42. 약수의 합

위의 문제를 풀었더니 쉽게 나왔다.

function solution(n) {
    var answer = 0;
    
    for (let i = 1; i <= n; i++){
      // 약간 공식같다. 1부터 n까지
        if(n % i === 0){
          // 나눴을 때 나머지가 0이면 약수
            answer += i
          // 그 약수값을 answer에 더해준다.
        }
    }
    return answer;
}

43. 예산

map, foreach, random까지 별 걸 다 봤으나 아는 선에서 답이 나왔다...

참고한 답

function solution(d, budget) {
    d.sort((a, b) => a-b);
    // 오름차순이 핵심
    while(d.reduce((a, b) => (a+b), 0) > budget){
        d.pop()
        // 전체 합에서 제일 큰 애 빼는게 포인트
    }
    return d.length;
}

오름차순하고 빼는게 포인트였다. 왜 생각을 못 했을까.. ㅠ

44. 최대공약수와 최소공배수

재귀함수를 이용하긴 했는데 잘 이해가 안 된다. 세모 표시 해야겠다.

const GCD = (a ,b) => b ? GCD(b, a % b) : a;
  const LCM = (a, b) => (a * b) / GCD(a, b);
  return [GCD(n, m), LCM(n, m)];

찾은 한글 문서 블로그

45. K번째 수 : 패스

46. 나머지가 1이 되는 수

비교적 쉽게 풀렸다.

function solution(n) {
    var answer = 0;
    let temp = []
    // 값을 담을 임의의 배열 만듦
    for(let i = 1; i <= n; i++){
        if(n % i === 1)
            temp.push(i)
      // 자연수 담은 배열 만들고 나머지 1인거 다 푸쉬함
    }
    answer = Math.min.apply(null, temp)
  // 배열에서 작은 값 구하는 메서드 이용
    return answer;
}
profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글