울타리 잘라내기 KIMHR 울타리 잘라내기 문제를 풀었는데요 오답이 뜹니다. 일단 예제의 테스트 케이스 3개는 무난히 통과했고 전에 어떤분이 하셧던 질문중에 테스트 케이스 1 9 1 8 8 8 8 8 8 케이스도 48로 잘 나왔고 이 케이스 저 케이스 여러개를 해봐도 예외 케이스를 못찾겠네요. 소스코드 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; } } 9년 전
1개의 댓글이 있습니다. JongMan maxCut()이 틀린거 같네요. 왜 틀렸나 좀더 생각해 보시고, 아닌거 같으시면 알고리즘 설명을 좀더 자세히 올려주세요. 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
KIMHR
울타리 잘라내기 문제를 풀었는데요 오답이 뜹니다.
일단 예제의 테스트 케이스 3개는 무난히 통과했고
전에 어떤분이 하셧던 질문중에
테스트 케이스 1 9 1 8 8 8 8 8 8 케이스도
48로 잘 나왔고 이 케이스 저 케이스 여러개를 해봐도
예외 케이스를 못찾겠네요.
소스코드
9년 전