[프로그래머스,Level 1] 약수의 합(JAVA 구현)

2020. 12. 29. 14:41·CodingTest/프로그래머스(Programmers)
반응형

- 첫 풀이 및 정답풀이

  이 문제의 핵심은 1부터 n까지의 수 중 n과 나누어 떨어지는 약수를 찾는 것이다. 여기서 참고하면 좋은 것이, 1부터 n 까지라고 해서 반복문을 전부 돌 필요가 없다. 왜냐하면, 예제 1번을 예로 들면 1일 때 12는 12로 나누어 떨어지기 때문에 약수이다. 이것을 12까지 반복했을 때 12 역시 12를  1로 나누어 떨어지게 하기 때문에 약수이다. 즉, 1과 12까지를 연산할 필요가 없이, n/2까지 또는 n의 제곱근까지만 반복해주면 연산 횟수를 줄일 수 있다.

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        // 1. 1부터 n의 제곱근까지 반복.
        for(int i = 1;i<=(int)Math.sqrt(n);i++){
            if(n % i == 0) answer+= (n/i) == i ? i : (n/i) +i;
        }
        
        return answer;
    }
}
저작자표시 (새창열림)
'CodingTest/프로그래머스(Programmers)' 카테고리의 다른 글
  • [프로그래머스,Level 1] 체육복(JAVA 구현)
  • [프로그래머스,Level 1] 시저 암호(JAVA 구현)
  • [프로그래머스,Level 1] 이상한 문자 만들기(JAVA 구현)
  • [프로그래머스,Level 1] 자릿수 더하기(JAVA 구현)
뜸부깅
뜸부깅
코딩에 대한 여러 개인적인 생각을 정리하고 공부를 하는 공간입니다!!
  • 뜸부깅
    코오오딩
    뜸부깅
  • 전체
    오늘
    어제
    • Note (429)
      • Skill (31)
        • Java & Spring (9)
        • Javascript & HTML & CSS (0)
        • React (0)
        • Next.js (22)
      • CodingTest (389)
        • 백준 온라인 저지(BOJ) (140)
        • 프로그래머스(Programmers) (79)
        • LeetCode (170)
      • Algorithm & Data Structure (6)
      • [Project] 포트폴리오 (3)
        • Front end (3)
        • Back end (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준1260
    next 14
    알고리즘
    medium
    백준7576
    leetcode 2236
    boj1427
    자바
    프로그래머스
    BOJ
    boj2108
    백준2751
    백준1427
    meidum
    백준7576자바
    백준
    Easy
    component-scan
    TypeScript
    Java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
뜸부깅
[프로그래머스,Level 1] 약수의 합(JAVA 구현)
상단으로

티스토리툴바