ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • 깃
  • 안드로이드
  • 프로그래머스
  • Android
  • 백준
  • entrySet
  • BFS
  • 깃허브
  • dfs
  • 프로그래머스 Lv.2
  • 코틀린
  • Arrays.sort()
  • java
  • reactjs
  • Comparator
  • kotiln
  • 스택/큐
  • git
  • 해시
  • PriorityQueue
  • React
  • compareTo()
  • getOrDefault
  • stack
  • DP
  • sort
  • HashMap
  • greedy
  • Queue
  • git bash

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

Algorithm & Data Structure/프로그래머스

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

2022. 1. 21. 19:34

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

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

 

풀이

간단하게 숫자의 절반까지만 for문을 돌리는 방법으로 풀었다.

12의 경우 약수가 1,2,3,4,6,12이므로 6까지 돌려서 더하고 마지막에 12를 더해서 return하면된다.
class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i=1;i<n/2;i++){
            if(n%i==0){
                answer += i;
            }
        }
        return answer+n;
    }
}

 

+ 다른방법!

사실 처음에는 소수의 합 문제를 풀 때랑 비슷하다고 생각해서 1부터 입력받은 루트n까지의 수(약수의 중심)까지만 반복해 나머지가 0일때 나눈 수와 몫을 answer에 더했다.

그랫더니 정확도가 85정도밖에 안나와서 실패. n이 16같이 i*i==n인경우를 고려하지 않았기 때문이다.

따라서 i*i==n인 경우에는 answer에 i만 더해준다.

class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i=1;i*i<=n;i++){
            if(n%i==0){
                if(i*i==n) answer +=i;
                else answer += i+(n/i);        
            }
        }
        return answer;
    }
}
저작자표시

'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글

[JAVA] 프로그래머스 : 나누어 떨어지는 숫자 배열  (0) 2022.01.31
[JAVA] 프로그래머스 : 자릿수 더하기  (0) 2022.01.21
[JAVA] 프로그래머스 : 정수 제곱근 판별  (0) 2022.01.21
[JAVA] 프로그래머스 : 소수찾기  (0) 2022.01.21
[JAVA] 프로그래머스 : 최대공약수와 최소공배수  (0) 2022.01.21
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [JAVA] 프로그래머스 : 나누어 떨어지는 숫자 배열
    • [JAVA] 프로그래머스 : 자릿수 더하기
    • [JAVA] 프로그래머스 : 정수 제곱근 판별
    • [JAVA] 프로그래머스 : 소수찾기
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바