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

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ•½μˆ˜μ˜ ν•© | ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ •μˆ˜ n을 μž…λ ₯λ°›μ•„ n의 μ•½μˆ˜λ₯Ό λͺ¨λ‘ λ”ν•œ 값을 λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•΄μ£Όμ„Έμš”. μ œν•œ 사항 n은 0 이상 3000μ΄ν•˜μΈ μ •μˆ˜μž…λ‹ˆλ‹€. μž…μΆœλ ₯ 예 n return 12 28 5 6 μž…μΆœλ ₯ 예 μ„€λͺ… μž…μΆœλ ₯ 예 #1 12의 μ•½μˆ˜λŠ” 1, 2, 3, 4, 6, 12μž…λ‹ˆλ‹€. 이λ₯Ό λͺ¨λ‘ λ”ν•˜λ©΄ 28μž…λ‹ˆλ‹€. μž…μΆœλ ₯ 예 #2 5의 μ•½μˆ˜λŠ” 1, 5μž…λ‹ˆλ‹€. 이λ₯Ό λͺ¨λ‘ λ”ν•˜λ©΄ 6μž…λ‹ˆλ‹€.

programmers.co.kr

 

< μ•½μˆ˜μ˜ ν•© >

 

 β—‹ 처음 ν‘Ό 풀이

1
2
3
4
5
6
7
8
9
10
11
class Solution {
  public int solution(int n) {
      int answer = 0;
  
      for(int i=1; i<=n ; i++){
             if(n%i==0)
                 answer+=i;
         }
        return answer;
  }
}
cs

생각과정

-μ•½μˆ˜λŠ” λ‚˜λˆ„μ–΄μ§€λŠ” κ°’ 

-μ•½μˆ˜μ˜ 합을 κ΅¬ν•˜λŠ” κ²ƒμ΄λ‹ˆκΉ 1λΆ€ν„°λ‚˜λˆ„μ–΄μ„œ λ‚˜λˆ„μ–΄μ§„λ‹€λ©΄ answer에 κ·Έ 값을 λ”ν•œλ‹€.

 

β—‹  볡슡 (2020.04.24)

1
2
3
4
5
6
7
8
9
10
11
class Solution {
  public int solution(int n) {
      int answer = n;
      for(int i=1; i<=(n/2); i++)
      {
          if(n%i==0)
              answer+=i;
      }
      return answer;
  }
}
cs

- μ•½μˆ˜λŠ” n/2 κΉŒμ§€λ§Œ ꡬ해도 되고 μ²˜μŒμ— n을 λ¨Όμ € 더해쀬닀.

β—‹  μ°Έκ³  ν•  풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class SumDivisor {
    public int sumDivisor(int num) {
        int answer = 0;
            for(int i = 1; i <= num/2; i++){
        if(num%i == 0) answer += i;
      }
        return answer+num;
    }
 
    // μ•„λž˜λŠ” ν…ŒμŠ€νŠΈλ‘œ μΆœλ ₯ν•΄ λ³΄κΈ° μœ„ν•œ μ½”λ“œμž…λ‹ˆλ‹€.
    public static void main(String[] args) {
        SumDivisor c = new SumDivisor();
        System.out.println(c.sumDivisor(12));
    }
}
cs

 

μ•½μˆ˜λŠ” /2κΉŒμ§€λ§Œ μ°Ύμ•„μ„œ  합을 κ΅¬ν•˜λŠ” κ±°λ‹ˆ answer +num ν•΄μ£Όλ©΄  for문을 쑰금 돌릴수 μžˆλ‹€.

+ Recent posts