어느 부분에서 오답인지 잘 모르겠어요
350
작성한 질문수 1
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
영상보기 전 혼자 풀었었던 답인데 어떤 부분에서 오답인지 모르겠습니다. 도와주세요 ㅜ
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int M = scan.nextInt();
int[] nums = new int[N];
int index1 = 0;
int index2 = 1;
int answer = 0;
for (int i = 0; i < N; i++){
nums[i] = scan.nextInt();
}
int sum = nums[index1] + nums[index2];
while(index2<N-1){ // index2가 2일 때
if(sum==M){ //
answer++; // anser은 +1이 됨. 이 때 index2는 2
sum -= nums[index1++];
sum += nums[++index2]; // 인덱스 위치 옮겨줌. index2는 3이 됨.
if(sum == M && index2 == N-1){
answer++;
}
continue;
}
if(sum<M){
sum += nums[++index2];
continue;
}
if(sum>M){
sum -= nums[index1++];
continue;
}
}
System.out.println(answer);
}
}
답변 2
1
안녕하세요^^
5 3
1 1 1 1 3
위 입력이 답이 3인데 2가 출력됩니다. 디버그해보세요. 그리고 저는 요즘에 이 문제를 영상의 방법보다 좀더 간결하게 아래와 같이 하고 있습니다. 참고하세요.
import java.util.*;
class Main {
public int solution(int n, int m, int[] arr){
int answer=0, sum=0, lt=0;
for(int rt=0; rt<n; rt++){
sum+=arr[rt];
while(sum>m){
sum-=arr[lt++];
}
if(sum==m) answer++;
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int m=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n, m, arr));
}
}
1
안녕하세요, 인프런 AI 인턴입니다.
ghsmsl님, 코드를 보고 오답 부분을 찾으려면 문제의 정확한 요구사항과 여러 가지 테스트 케이스를 고려해야 해요. 제출하신 코드를 보면, index2 또한 sum == M 일 때 index1과 index2를 옮기는 로직에서 index2가 배열의 끝에 도달했을 때를 충분히 고려하지 않은 것 같아요. 이 부분도 확인이 필요합니다. 특히 배열의 마지막 요소를 처리할 때 off-by-one 오류가 발생하지 않도록 주의해야 합니다. 마지막으로, while문 내에서 sum이 M보다 클 경우 sum에서 nums[index1]을 빼고 index1을 증가 시키는데, 이 로직이 정확하게 동작하는지 다시 한 번 검증해볼 필요가 있습니다. 아래와 같은 테스트 케이스를 만들어서 코드가 정상적으로 동작하는지 확인해 보세요. 이후에도 오류가 발견되면 질문이나 코드와 함께 추가로 질문해주세요.
- N과 M이 같고 모든 숫자가 동일할 때 (예: N=5, M=15, nums=[3, 3, 3, 3, 3])
- N과 M이 같고 하나의 숫자만 M과 같을 때 (예: N=5, M=3, nums=[1, 2, 3, 4, 5])
- N과 M이 다르고 연속된 수들의 합이 M이 되는 경우가 여러개 있는 경우 (예: N=8, M=6, nums=[1, 2, 1, 3, 1, 1, 1, 2])
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
26
1
갑자기 채점 사이트가 바뀌었어요
0
31
1
문제 리스트 페이지
0
26
1
채점 사이트 관련 질문드립니다
0
23
1
봉우리 문제 질문입니다
0
80
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
64
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
71
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
84
2
6-7 강의에서
0
47
1
6-6. 장난꾸러기 질문 있습니다.
0
44
1
강의 수강후 코딩테스트
0
109
1
answer 변수 사용 여부
0
43
1
2중 for문
1
84
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
70
1
이런 풀이는 어떨까요
0
42
1
자바 스트림 방식의 효율성 질문 드립니다.
0
57
1
알고리즘 자료 구조들..
0
61
1
StringBuilder vs BufferdWriter
0
47
1
원더랜드(프림)
0
49
1
이런 코드는 어떤가요?
0
59
1
bfs 풀이
0
57
1
병합정렬
0
55
1





