[프로그래머스] 기사단원의 무기(Java)

수경·2022년 12월 22일
0

problem solving

목록 보기
88/174

프로그래머스 - 기사단원의 무기

풀이

1부터 number까지 각 수가 가지는 약수의 개수를 구하고, limit 을 초과하면 power로 대체

number = 10, limit = 3, power = 2 일때,

i12345678910
11111111111
222222
3333
444
555
66
77
88
99
1010
총 개수1223242434

결과값 : 1 + 2 + 2 + 3 + 2 + 2 + 2 + 2 + 3 + 2 = 21


코드

public class Weapons {
	public int solution(int number, int limit, int power) {
		int[] divisor = new int[number + 1];
		int result = 0;

		for (int i = 1; i <= number; i++) {
			for (int n = 1; n <= i / n; n++) {
				if (i % n == 0) {
					if (n * n == i) divisor[i] += 1;
					else divisor[i] += 2;
				}
			}
			result += divisor[i] <= limit ? divisor[i] : power;
		}
		return result;
	}

	public static void main(String[] args) {
		Weapons weapons = new Weapons();
		System.out.println(weapons.solution(5, 3, 2));  // 10
		System.out.println(weapons.solution(10, 3, 2));  // 21
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글