1.For문을 이용한 풀이방법
속도를 잡았다.
import java.util.stream.*;
import java.util.*;
class Solution {
public int solution(int number, int limit, int power) {
int[] attackPower = new int[number+1];
for(int i = 1; i<=number ; i++){
for(int j = 1; i*j<=number; j++){
attackPower[i*j]++;
}
}
int answer = 0;
for (int i = 1; i <= number; i++) {
if (attackPower[i] > limit) {
answer += power;
} else {
answer += attackPower[i];
}
}
return answer;
}
}
2. stream을 이용한 풀이방법
속도를 포기하고 가독성을 높인 방법이다.
import java.util.stream.*;
import java.util.*;
class Solution {
public int solution(int number, int limit, int power) {
int[] attackPower = new int[number+1];
for(int i = 1; i<=number ; i++){
for(int j = 1; i*j<=number; j++){
attackPower[i*j]++;
}
}
return Arrays.stream(attackPower).map( p -> { return (p > limit)? power : p; }).sum();
}
}
3. 속도 비교
위가 for문, 아래가 stream을 활용한 방법이다. 속도면에서 3 배 이상 차이가 나는 모습을 확인할 수 있다.
'코딩테스트 > Programmers' 카테고리의 다른 글
[프로그래머스] 실패율 (0) | 2025.03.05 |
---|---|
[프로그래머스] 소수 찾기 (0) | 2025.03.05 |
[프로그래머스] 포켓몬 (0) | 2025.03.01 |
[프로그래머스] 비밀지도 (0) | 2025.02.28 |
[프로그래머스] k번째수 (1) | 2025.02.28 |