연속된 숫자의 합이 N이 되야하므로, for 문을 N까지 다 돌 필요 없이 N/2+1 까지만 돌아도 충분하다
🆘 이해가 어려운 내용
❌ 해결하지 못한 이유
✅ 본인 풀이
// 연속된 자연수의 합
public class P0305 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int sum = 0;
int answer = 0;
int l = 1;
for (int r = 1; r <= N / 2 + 1; r++) {
sum += r;
while (sum >= N) {
if (sum == N) {
answer++;
}
sum -= l;
l++;
}
}
System.out.println(answer);
}
}
📌 문제
⭐️ 아이디어
r
을 우측으로 밀고가면서 합계를 구한다M
보다 크거나 같아지면 while 문을 돌린다answer++
해준 뒤 sum에서l
을 빼고 우측으로 한칸 민다answer
는 건드리지 않고 sum 에서l
을 빼고 우측으로 한칸 민다M
보다 작아질 때 까지 반복🤔 고민한 내용
💪 새롭게 배운 내용
🆘 이해가 어려운 내용
❌ 해결하지 못한 이유
✅ 본인 풀이
참고한 자료