코린이의 소소한 공부노트

[LeetCode/Easy] 2511. Maximum Enemy Forts That Can Be Captured 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2511. Maximum Enemy Forts That Can Be Captured

무지맘 2023. 5. 6. 00:33

1. Input

1) int[] forts

- forts[i] == 1: 아군 요새

- forts[i] == 0: 적군 요새

- forts[i] == -1: 빈 요새

 

2. Output

1) 아군을 1번 이동시켜서 함락시킬 수 있는 적 요새의 최대 수를 반환

- 아군이 움직이다가 빈 요새 또는 아군 요새를 만나면 행군을 멈춰야 한다.

- 다시 말하면, 아군은 적군 요새만 넘어다닐 수 있다.

2) 적군 요새를 함락시킬 수 없다면 0을 반환

 

3. Constraint

1) 1 <= forts.length <= 1000

2) -1 <= forts[i] <= 1

 

4. Example

Input: forts = [1,0,0,-1,0,0,0,0,1] -> Output: 4

설명:

- 0번 아군을 3번까지 옮기면 2개의 적군 요새를 함락시킬 수 있다.

- 8번 아군을 3번까지 옮기면 4개의 적군 요새를 함락시킬 수 있다.

- 따라서 4를 반환한다.

 

5. Code

1) 첫 코드(2023/05/06)

class Solution {
    public int captureForts(int[] forts) {
        int max = 0;
        for(int i=0 ; i<forts.length ; i++){
            if(forts[i]==-1){
                for(int j=i-1 ; j>=0 && forts[j]!=-1 ; j--)
                    if(forts[j]==1){
                        max = Math.max(max, i-j-1);
                        break;
                    }
                for(int j=i+1 ; j<forts.length && forts[j]!=-1 ; j++)
                    if(forts[j]==1){
                        max = Math.max(max, j-i-1);
                        break;
                    }
            }
        }
        return max;
    }
}