인프런 커뮤니티 질문&답변
작성자 없음
작성자 정보가 삭제된 글입니다.
선생님 왜 오답인지 모르겠습니다...자연수의합
작성
·
173
0
이렇게 풀었는데 오답으로 나와서 어디가 문제인지 잘 모르겠습니다... 강의 처럼 배열을 꼭 사용해야 하나요?
답변 2
0
김태원
지식공유자
안녕하세요^^
위에 코드로는 17을 입력했을 때 8 9 경우로 1이 출력되어야 하는데 0이 출력됩니다.
n=15일때, 아래 코드처럼 sum==n 이 되는 순간의 lt와 rt를 출력해보면서 디버그해보세요.
import java.util.Scanner;
public class Main {
public int solution(int n) {
int answer = 0, sum=0, lt=0;
for (int rt = 0; rt < n/2+1; rt++) {
sum+=rt;
if(sum==n){
answer++;
System.out.println(lt+" "+rt);
}
while(sum>=n) {
sum-=lt++;
if(sum==n){
answer++;
System.out.println(lt+" "+rt);
}
}
}
return answer;
}
public static void main(String[] args) {
Main t = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
System.out.println(t.solution(n));
kb.close();
}
}
0
import java.util.Scanner;
public class Main {
public int solution(int n) {
int answer = 0, sum=0, lt=0;
for (int rt = 0; rt < n/2+1; rt++) {
sum+=rt;
if(sum==n)answer++;
while(sum>=n) {
sum-=lt++;
if(sum==n)answer++;
}
}
return answer;
}
public static void main(String[] args) {
Main t = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
System.out.println(t.solution(n));
kb.close();
}
}
주말인데 답변해주셔서 감사합니다.






감사합니다. 주말에 답변해주셔서 감사합니다!!