코딩테스트 풀이/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;
}
}