이 영역을 누르면 첫 페이지로 이동
Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

페이지 맨 위로 올라가기

Nuhends 의 Tech Life

IT / Tech / 재테크 관련 뉴스를 최대한 알기 쉽게 전달하는 Tech 블로그 입니다.

[프로그래머스] lv1. 약수의 합 / Javascript

  • 2025.04.25 18:55
  • 프로그래밍/Algorithm
반응형

[프로그래머스] lv1. 약수의 합 / Javascript

 

1. 문제

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

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

 

제한 사항 

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

 

입출력 예 #1

12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

 

입출력 예 #2

5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

2. 풀이

function solution(n) {
    let result = [];
    let total = 0;
    
    for (let i=1; i<=Math.sqrt(n); i++) {
        if (n % i === 0) {
            result.push(i);
        }
    }
    
    result.forEach((v) => {
        const opV = n / v === v ? 0 : n / v;
        total += (v + opV)
    })

    return total;
}

 

핵심 아이디어

1. 12의 약수는 [1,2,3,4,6,12] 이다. 사실 이는 반으로 쪼개도됨 [1,2,3] [4,5,6]

1,2,3만 구하고 나머진 N에서 1,2,3으로 각각 나누면 4,5,6을 구할 수 있음. 단순해보이지만 시간복잡도에서 큰 차이가 있음. 

2. 16같은 수는 [1,2,4,8,16] 약수를 가진다. 보면 약수의 개수가 홀수임. 이때는 √n 까지 순회하여 나누어떨어지는 값을 배열에 넣어두고 

이후 연산에서 값이 √n일 경우 예외처리 해주면 됨. 이는 O(n)에서 O(√n) 으로 시간복잡도를 줄일 수 있음.

 

 

 

 

 

4. 시간복잡도

O(√n)

 

→ 따라서 최악의 경우에도 O(√3000) = O(54.xx)

반응형
저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 > Algorithm' 카테고리의 다른 글

[프로그래머스] lv1. 문자열 내 p와 y의 개수 / Javascript  (0) 2025.04.25
[프로그래머스] lv1. 나머지가 1이 되는 수 찾기/ Javascript  (0) 2025.04.25
[Softeer] lv2. [21년 재직자 대회 예선] 회의실 예약 / Javascript  (0) 2025.04.25
[Softeer] lv2. 8단 변속기 / Javascript  (0) 2025.04.24
[Softeer] lv2. [21년 재직자 대회 예선] 전광판 / Javascript  (1) 2025.04.24

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [프로그래머스] lv1. 문자열 내 p와 y의 개수 / Javascript

    [프로그래머스] lv1. 문자열 내 p와 y의 개수 / Javascript

    2025.04.25
  • [프로그래머스] lv1. 나머지가 1이 되는 수 찾기/ Javascript

    [프로그래머스] lv1. 나머지가 1이 되는 수 찾기/ Javascript

    2025.04.25
  • [Softeer] lv2. [21년 재직자 대회 예선] 회의실 예약 / Javascript

    [Softeer] lv2. [21년 재직자 대회 예선] 회의실 예약 / Javascript

    2025.04.25
  • [Softeer] lv2. 8단 변속기 / Javascript

    [Softeer] lv2. 8단 변속기 / Javascript

    2025.04.24
다른 글 더 둘러보기

정보

Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

  • Nuhends 의 Tech Life의 첫 페이지로 이동
반응형

검색

메뉴

  • 홈
  • 웹 개발
  • 경제 데이터
  • 경제 공부
  • 방명록

카테고리

  • 분류 전체보기 (127)
    • 프로그래밍 (69)
      • React (3)
      • HTML&CSS 사전 (13)
      • JAVASCRIPT 사전 (11)
      • Algorithm (23)
      • 이슈 정리 (2)
      • 개발 환경 (4)
      • NodeJS (1)
      • Typescript (4)
      • NextJS (5)
      • React-Query (2)
      • ai (1)
    • 경제 데이터 (22)
      • 주식 순위 (20)
      • 경제지표 (2)
    • 경제 공부 (25)
      • 경제 신문 읽기 (3)
      • 세금 재테크 (7)
      • 인사이트 (4)
      • 경제용어정리 (9)
      • 정부 지원 제도 관련 (2)
    • 팁 모음 (11)
      • 인터넷 (5)
      • 생활 (3)
      • SNS 맛집 (3)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 코테
  • softeer
  • 코테 풀이
  • javascript
  • 프로그래머스
  • 코딩테스트
  • 자바스크립트
  • 알고리즘

나의 외부 링크

정보

nuhends의 Nuhends 의 Tech Life

Nuhends 의 Tech Life

nuhends

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © nuhends. Designed by Fraccino.

티스토리툴바