강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của hak
hak

câu hỏi đã được viết

Giới thiệu về giải quyết vấn đề thuật toán Java: Chuẩn bị cho các bài kiểm tra mã hóa

4. Dãy con liên tục (Bài toán phức hợp)

왜 오답인지 원인을 모르겠습니다(해결,자문자답)

Đã giải quyết

Viết

·

376

0

오답시 틀린 테스트케이스를 확인할 수 있다는 설명을 봤는데 이 문제만 그런건지 확인할 수 없습니다ㅠ 코드 리뷰 부탁드려도 될까요?

public static int solution(int nint mint ar[]) {
        int answer = 0subsum = 0;
        int lt=0rt=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 = 0i < ni++) {
            ar[i] = sc.nextInt();
        }
        sc.close();
        System.out.println(solution(nmar));
   }

java코테 준비 같이 해요!

Câu trả lời 4

0

저랑 완전 똑같은 코드 짜셨네요. 저도 왜 오답인지 물어보려고 커뮤니티 들어왔다가 덕분에 이해하고 갑니다.

0

hak님의 프로필 이미지
hak
Người đặt câu hỏi

해당 코드는 rt = n이 되는 턴에서 조건문 중 하나를 수행하고 바로 종료하므로 연속부분수열합(subsum)>m일 경우 lt가 다음 인덱스로 넘어가야하는데 이를 실행할 수 없습니다.

0

hak님의 프로필 이미지
hak
Người đặt câu hỏi

중간 출력을 지우고 제출해도  오답으로 뜹니다.

0

codingcamp님의 프로필 이미지
codingcamp
Người chia sẻ kiến thức

안녕하세요^^

중간에 출력하는

System.out.println(lt+"~"+(rt-1)+" subsum:"+subsum);

이부분을 지우시고 채점하세요. answer만 출력해야 합니다.

Hình ảnh hồ sơ của hak
hak

câu hỏi đã được viết

Đặt câu hỏi