코딩테스트/Programmers

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

grove1212 2025. 3. 2. 15:30

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