울타리 잘라내기 문제를 풀었는데요 오답이 뜹니다.
일단 예제의 테스트 케이스 3개는 무난히 통과했고
전에 어떤분이 하셧던 질문중에
테스트 케이스 1 9 1 8 8 8 8 8 8 케이스도
48로 잘 나왔고 이 케이스 저 케이스 여러개를 해봐도
예외 케이스를 못찾겠네요.
소스코드
~~~ java
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int caseNum = in.nextInt();
for(int cNum = 0; cNum < caseNum; cNum++){
int num = in.nextInt();
int[] fence = new int[num];
for(int i = 0; i < num; i++){
fence[i] = in.nextInt();
}
System.out.println(cut(fence, 0, fence.length-1));
}
}
static int cut(int[] fence, int left, int right){
int mid = (left+right)/2;
if(left == right){
return fence[left];
} else {
int leftCut = cut(fence, left, mid);
int rightCut = cut(fence, mid+1, right);
int maxValue = max(leftCut, rightCut);
maxValue = max(maxValue, maxCut(fence, mid));
return maxValue;
}
}
static int maxCut(int[] fence,int i){
int left = i-1;
int right = i+1;
int count = 1;
int max = Integer.MIN_VALUE;
while(left >= 0 && fence[i] <= fence[left]){
count++;
left -= 1;
}
while(right < fence.length && fence[i] <= fence[right]){
count++;
right += 1;
}
if(max < (fence[i]*count))
max = fence[i]*count;
return max;
}
static int max(int a, int b){
if(a > b)
return a;
else
return b;
}
KIMHR
울타리 잘라내기 문제를 풀었는데요 오답이 뜹니다.
일단 예제의 테스트 케이스 3개는 무난히 통과했고
전에 어떤분이 하셧던 질문중에
테스트 케이스 1 9 1 8 8 8 8 8 8 케이스도
48로 잘 나왔고 이 케이스 저 케이스 여러개를 해봐도
예외 케이스를 못찾겠네요.
소스코드
~~~ java
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int caseNum = in.nextInt();
for(int cNum = 0; cNum < caseNum; cNum++){
int num = in.nextInt();
int[] fence = new int[num];
for(int i = 0; i < num; i++){
fence[i] = in.nextInt();
}
System.out.println(cut(fence, 0, fence.length-1));
}
}
}
~~~
11년 전