
#문제
#내 풀이
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배 높임. 작은 발견, 아이디어가 큰 결과값 차이를 불러온다.