Inflearn Community Q&A
왜 오답인지 원인을 모르겠습니다(해결,자문자답)
Resolved
Written on
·
375
0
오답시 틀린 테스트케이스를 확인할 수 있다는 설명을 봤는데 이 문제만 그런건지 확인할 수 없습니다ㅠ 코드 리뷰 부탁드려도 될까요?
public static int solution(int n, int m, int ar[]) {
int answer = 0, subsum = 0;
int lt=0, rt=0;
while(rt<n){ //적어도 lt<=rt임
if(subsum <m){
subsum += ar[rt++];
System.out.println(lt+"~"+(rt-1)+" subsum:"+subsum);
}
else if(subsum == m){
answer++;
subsum -= ar[lt++];
}
else{
subsum -= ar[lt++];
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] ar = new int[n];
for (int i = 0; i < n; i++) {
ar[i] = sc.nextInt();
}
sc.close();
System.out.println(solution(n, m, ar));
}
java코테 준비 같이 해요!
Answer 4
0
0
hak
Questioner
해당 코드는 rt = n이 되는 턴에서 조건문 중 하나를 수행하고 바로 종료하므로 연속부분수열합(subsum)>m일 경우 lt가 다음 인덱스로 넘어가야하는데 이를 실행할 수 없습니다.
0
0
codingcamp
Instructor
안녕하세요^^
중간에 출력하는
System.out.println(lt+"~"+(rt-1)+" subsum:"+subsum);
이부분을 지우시고 채점하세요. answer만 출력해야 합니다.





