Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • CSS
  • Rust
  • React
  • 데이터 타입
  • 하스켈
  • Til
  • html
  • Flutter
  • go
  • redis
  • 알고리즘
  • PostgreSQL
  • 프로그래머스
  • javascript
  • Haskell
  • koa
  • 문자열
  • html5
  • mysql
  • Java

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[프로그래머스] 약수의 합
etc./Algorithm

[프로그래머스] 약수의 합

2022. 1. 19. 14:57
728x90

 

문제 

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

 

제한 사항

  • n은 0 이상 3000이하인 정수입니다.

입출력 예

  • 입출력 예 #1
    12의 약수는 1, 2 ,3 ,4 ,6, 12입니다. 이를 모두 더하면 28입니다.
  • 입출력 예 #2
    5의 약수는 1,5입니다. 이를 모두 더하면 6입니다.
function solution(num) {
    const arr = [];
    // 먼저 i값의 반복문을 돌려준다.
    for (let i = 0; i < num; i++) {
        // input을 나눌때 나머지가 0인 정수를 모조리 찾아주고 
        // 모든 숫자를 배열에 넣어 누적 합사후 합계를 반환한다.
        // 하지만 0 부터 input 까지 숫자를 1씩 더해가며 계산해야하므로 시간 복잡도가 상당하다.
        if (num % i === 0) arr.push(i);
    }
    
    return arr.reduce((a, c) => a + c, 0);
}
  • input을 나누었을때 나머지가 0인 정수를 모조리 찾는다.
  • 모든 숫자를 배열에 넣어 누산 후에 합계를 반환
  • 하지만 0 부터 input까지 숫자를 1씩 더해가면서 계산하므로 시간 복잡도 상당
function solution(num) {
  let sum = 0;
    for (let i = 1; i <= num; i++) {
        if (num % i === 0) sum += i
    }
    
    return sum
}
  • sum의 초기값으로 0을 넣고 for문을 돌러 i가  num보다 작거나 같을때 i값을 증가시키고
  • num 과 i를 나눈 값이 0과 같다면 sum을 i값으로 할당시키면 된다.

멘토님 풀이법

function solution(n) {
  let answer = n;
    
    // n만 큼의 길이만큼 반복문 실행 
    // n을 2만큼 나눈 값까지 만 반복문 실행 
    
    for( let i = 1; i <= n/2; i++) {
       // n을 i로 나눈 값에 나머지가 0이 아닌것을 출력
        if(n % i === 0) {
          // answer의 i값을 더해주면됨
            answer += i;
       }
        
        
    }
    
    return answer;
}
function solution(n) {
     // Number 타입은 문자열이 아니라 split 사용불가
    // 그래서 빈배열에 만들어야함
    // n만큼ㅁ을 길이를 가지는 빈배열 
    const answer = new Array( n ) // 해당 갯수에 맞는 배열 생성
    
    // 다 1로 채워줌
    .fill(1) // 배열의 데이터마다 해당 인자 데이터를 할당
    // reduce 최대 2개
    .reduce((cu,el, i) => {
        // 1부터 n까지 포함한 숫자 가져옴 

        const num = el + i;

        // 연산
        
        return  n % num === 0
          // 약수
            ?  cu + num
         // 약수 아니면 가지고 있는 데이터 그대로 다음 반복문에 던져줌     
            : cu 
    },0)

    return answer;
    
    // 비워있어 실제로 사용하지 못하는 데이터 
    //지금 상태로는 어떠한 반복문도 사용 x 
    // 메서드를 사용할 수 있게 
    // console.log(answer[0])
    // console.log(answer)
    
    
}

 

 

 

약수의 합 | 프로그래머스

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.n은 0 이상 3000이하인 정수입니다.\*\*입출력 예 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

velog.io

 

'etc. > Algorithm' 카테고리의 다른 글

[프로그래머스] 자릿수 더하기  (0) 2022.01.20
[프로그래머스 코딩테스트] 서울에서 김서방 찾기  (0) 2022.01.19
[알고리즘 테스트] 가운데 글자 가져오기  (0) 2022.01.18
    'etc./Algorithm' 카테고리의 다른 글
    • [프로그래머스] x만큼 간격이 있는 n개의 숫자
    • [프로그래머스] 자릿수 더하기
    • [프로그래머스 코딩테스트] 서울에서 김서방 찾기
    • [알고리즘 테스트] 가운데 글자 가져오기
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바