[Programmers] 기사단원의 무기 - JAVA

최영환·2022년 11월 19일
0

Programmers

목록 보기
4/43
post-thumbnail

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

class Solution {
    public int solution(int number, int limit, int power) {
        int answer = 0;
        
        for (int i = 1; i <= number; i++) {
        	int result = getNum(i);
        	
        	if (result <= limit) {
        		answer += result;
        	}
        	else {
        		answer += power;
        	}
        }
        return answer;
    }
    
        int getNum(int n) {
    	int cnt = 0;
    	
    	for (int i = 1; i * i <= n; i++) {
    		if (n % i == 0) {
    			cnt++;
    			if (i * i < n) {
    				cnt++;
    			}
    		}
    	}
    	return cnt;
    }
}

📄 해설

  • 1차 풀이 : 단순하게 약수의 개수를 구하기 위해 2중 for문을 사용하여 풀이하였으나, 시간초과가 났음
  • 단순 반복문이 아닌, 시간을 절약할 수 있는 알고리즘을 세워서 해결해야하는 문제
  • 약수 개수를 구하는 효율적인 코드를 직접 짜지 못하여, 다른 사람의 풀이를 참고하였음
profile
조금 느릴게요~

0개의 댓글