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

김형준·2024년 2월 11일
post-thumbnail

#문제

#내 풀이

class Solution {
    public int solution(int n) {
        int sum = 0;
        for(int i=1; i<= n; i++){
            if (n% i == 0){
                sum += i;
            }
        }
        return sum;
    } 
}

코드 리뷰: 정직하지만 비효율적인 코드. 효율성 높일 방법 연구하고 적용까지 할 수 있어야함.

#첫 오답 풀이

class Solution {
    public int solution(int n) {
        int sum = 0;
        for(int i=0; i<= n; i++){
            if (n% i == 0){
                sum += i;
            }
        }
        return sum;
    } 
}

틀린 이유: int i 가 0부터 시작하면 n%i 식이 성립하지 않아 에러가 뜨게 된다!
i의 초기값은 1이여야함. 작은 실수 포인트가 코드 전체를 무용지물로 만들수 있음을 인지해야됨.

#다른사람의 풀이1

class Solution {
    public int solution(int n) {
        int sum = n; // n 자신을 먼저 더함
        for (int i = 1; i <= n/2; i++) {
            if (n % i == 0) {
                sum += i;
            }
        }      
        return sum;
    }
}

코드 리뷰: 자기 자신을 제외한 모든 약수가 /2 보다 작은 성질을 이용하여 (디테일) 코드 효율성을 2배 높임. 작은 발견, 아이디어가 큰 결과값 차이를 불러온다.

profile
일어나...

0개의 댓글