프로그래머스_약수의 합 JAVA

2025. 1. 27. 03:35·알고리즘/알고리즘 풀이
반응형

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

이번 문제는 '약수의 합'이다. 

그리고, 과거에 풀었던 문제라 과거 코드가 남아있었다.

 

과거 코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        int temp = 0;
        
        for(int i = 1; i <= n; i++) {
            if(n % i == 0) {
                temp = n / i;
                if(temp < i) break;
                if(temp == i) answer += i;
                else answer += i + temp;
            }
        }
        return answer;
    }
}

이번의 과거 코드 역시 마음에 들지 않는다..

에라토스테네스의 체를 사용할까하다가 뭔가 비효율적인 것 같아서 

핵심 코드 내용만 조금 가져와서 수정했다.

 

현재 코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i = 1; i <= Math.sqrt(n); i++) {
            if(n % i == 0) {
                answer += i;
                if(i != n / i) answer += n / i; 
            }
        }
        
        return answer;
    }
}

일단 제일 뵈기 싫은 for문의 조건부터 수정했다.

에라토스테네스의 체를 구현했을때처럼 Math.sqrt(n)을 사용해서 for문 반복 횟수를 줄였다.

그리고 i로 나눈 값이 0일 때.. 즉, 약수일 때 i의 값이 n/i한 값과 같지 않으면

그 수 또한 약수이니 answer에 그 값을 더해줬다.

 

오늘도 즐거운 코딩...!

반응형
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/알고리즘 풀이' 카테고리의 다른 글
  • 프로그래머스_짝수와 홀수 JAVA
  • 프로그래머스_핸드폰 번호 가리기 JAVA
  • 프로그래머스_최댓값과 최솟값 JAVA
  • 프로그래머스_숫자 문자열과 영단어 JAVA
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQL
    MSA
    개발자
    넥사크로
    알고리즘
    방통대
    인프런
    운영체제
    프론트엔드
    Java
    QueryDSL
    스프링부트
    egov
    oracle
    에러해결
    react
    RESTful
    IT
    springboot
    토이프로젝트
    기출문제
    자바스크립트
    Spring
    백준
    JPA
    프로그래머스
    SpringBoot를 이용한 RESTful Web Service 개발
    코딩테스트
    전자정부프레임워크
    토비의스프링부트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
프로그래머스_약수의 합 JAVA
상단으로

티스토리툴바