코딩테스트

알고리즘 문제풀이 3-4

Eprld 2025. 3. 20. 17:14

문제 1 / 회전방어

-목표 : N초 동안 최적의 행동을 함으로써 만들 수 있는, 차감되는 점수의 합의 최솟값을 반환하는 프로그램 구

 

문제 풀이

 

최종 코드

import java.util.Arrays;
class Solution {
    public int solution(int N, int[][] enemies) {
        int answer = 0;
        int[][] dp = new int[N][4];

        for (int d = 0; d < 4; d++) {
            dp[0][d] = calcDamage(enemies, d, 0);
        }

        for (int t = 1; t < N; t++) {
            for (int d = 0; d < 4; d++) {
                dp[t][d] = Integer.MAX_VALUE;

                dp[t][d] = Math.min(dp[t][d], dp[t - 1][d] + calcDamage(enemies, d, t));

                dp[t][d] = Math.min(dp[t][d], dp[t - 1][(d + 3) % 4] + calcDamage(enemies, d, t));

                dp[t][d] = Math.min(dp[t][d], dp[t - 1][(d + 1) % 4] + calcDamage(enemies, d, t));
            }
        }
        return Arrays.stream(dp[N - 1]).min().getAsInt();
    }


    private int calcDamage(int[][] enemies, int d, int t) {
        int damage = 0;
        for (int i = 0; i < 4; i++) {
            int multiplier = 1;
            if ((d + 2) % 4 == i) multiplier = 3;
            else if ((d + 1) % 4 == i || (d + 3) % 4 == i) multiplier = 2;

            damage += enemies[i][t] * multiplier;
        }
        return damage;
    }
}

문제 2 / 기사 배치하기

-목표 : 기사들이 최적의 경로를 찾아 이동하면서 최대한의 점수를 구하는 프로그램 구현

 

문제 풀이

반복문을 이용하여 최댓값과 최소값을 구한 뒤 차를 반환하였다.

 

최종 코드

 


문제 3 / 소수 판별

-목표 : 자연수 형태의 A 와 B 가 주어졌을 때, A이상 B이하의 모든 자연수 중에서 소수의 개수를 반환하는 프로그램 구현

 

문제 풀이

 

최종 코드

import java.util.*;
class Solution {
    public int solution(int A, int B) {
        int answer = 0;
        boolean[] isPrime = new boolean[B - A + 1];
        Arrays.fill(isPrime, true);

        for(long i = 2; i * i<= B; i++){
            long start = Math.max(i * i, (A + i - 1) / i * i);
            for(long j = start; j <= B; j+= i){
                isPrime[(int)(j - A)] = false;
            }
        }
        if(A == 1) isPrime[0] = false;
        for(boolean prime : isPrime){
            if(prime) answer++;
        }
        return answer;
    }
}

 

'코딩테스트' 카테고리의 다른 글

알고리즘 문제풀이 3-5  (0) 2025.03.21
알고리즘 문제풀이 3-3  (0) 2025.03.19
알고리즘 문제풀이 3-2  (0) 2025.03.18
알고리즘 문제풀이 3-2  (0) 2025.03.18
알고리즘 문제풀이 3-1  (0) 2025.03.18