개발 창고/Algorithm
[프로그래머스] 기사단원의 무기 - JAVA
로이제로
2024. 2. 29. 08:00
반응형
이 버전에서는 TOC를 지원하지 않습니다. (ex. 모바일)
문제
https://school.programmers.co.kr/learn/courses/30/lessons/136798
문제 내용은 지적 재산 보호 차원에서 가져오지 않고 풀이만 공유드리도록 하겠습니다.
풀이
제 풀이가 무조건적으로 맞는 것도 최적의 답변도 아니지만, 이런 풀이도 있다는 차원에서 작성해 보며, 좀 더 나은 방법이 있다면 이야기해 주셔도 도움 될 것 같습니다.
class Solution {
public int solution(int number, int limit, int power) {
int answer = 0;
// Step. 기사단원의 수 만큼 약수 개수 / 철의 무개 계산
for(int knight = 1; knight <= number; knight++){
// Step. 기사단원이 구매하려는 무기 공격력 계산 (약수 개수)
// 약수 개수 알고리즘 적용
int attack = 0;
for(int i = 1; i * i <= knight; i++){
if(i * i == knight) attack += 1;
else if(knight % i == 0) attack += 2;
}
// System.out.print(", " + attack);
// Step. 구매하려는 무기 공격력이 공격력 제한 수치(limit)보다 큰 경우 사용할 무기(power)로 대체
if(attack > limit) attack = power;
// System.out.print("=> " + attack);
// Step. 철의 중량 합산 (무기 공격력 * 1kg)
answer += attack;
// System.out.print("= " + answer);
}
return answer;
}
}
반응형