🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/136798
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📝 문제 요약
각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다.
단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고,
제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매합니다.

핵심은 숫자별 약수의 개수를 구하고, 조건에 따라 무기의 공격력 값을 변경한다!!
🔍 문제 풀이 (feat. 접근 방법)
1. 먼저 약수의 개수를 구한다.
2. 만약 개수가 협약 제한수치(limit) 보다 크다면 협약 공격무기(power)를 구매해야 한다.
3. 무기의 공격력이 담긴 배열의 합계를 계산하여 return 한다.
👩🏻💻 전체 코드
import java.util.*;
import java.util.stream.*;
class Solution {
public int solution(int number, int limit, int power) {
int[] cntArr = new int[number];
for (int i = 0; i < number; i++) {
// 각 약수를 구하는 함수를 호출
cntArr[i] = countOfDivisor(i + 1);
// limit, power 조건 적용
if (cntArr[i] > limit) {
cntArr[i] = power;
}
}
// 배열의 합계를 계산하여 return
return Arrays.stream(cntArr).sum();
}
// 각 숫자별 약수의 개수를 구하는 함수
public int countOfDivisor(int num) {
int divisorCount = 0;
// 절반까지만 계산
for (int i = 1; i * i <= num; i++) {
if (i * i == num) {
divisorCount++;
} else if (num % i == 0) {
divisorCount += 2;
}
}
return divisorCount;
}
}
'스터디 > 묘공단 자바 코딩테스트' 카테고리의 다른 글
| [묘공단] 3주 차 코딩 테스트 합격자 되기: 자바 (책 요약) (0) | 2024.04.29 |
|---|---|
| [프로그래머스/Java] 8일차 코테 문풀 - Lv. 1 성격 유형 검사하기 (0) | 2024.04.23 |
| [묘공단] 1, 2주 차 코딩 테스트 합격자 되기: 자바 (책 요약) (1) | 2024.04.22 |
| [프로그래머스/Java] 6일차 코테 문풀 - Lv. 1 과일 장수 (0) | 2024.04.21 |
| [프로그래머스/Java] 5일차 코테 문풀 - Lv. 1 카드 뭉치 (0) | 2024.04.20 |