데브코스 중에 매우 간단한 예제를 풀다가 생각지 못한 문제를 마주하여 글을 쪄봄...

문제는 다음과 같이 amazing할 정도로 단순하다. 그런데 무슨 문제가 있었냐!
public static void main(String[] args) {
int i = 0;
int result = 0;
// 0부터 10까지 중 홀수들의 합을 구하세요.
while (i <= 10) {
if (i % 2 == 1) result += i++;
}
System.out.println(result);
}
나름 코테 좀 풀어봤겠다, 최소한의 코드로 풀어 보려고 했다. 당연히 될 줄 알고 자신만만했는데 무한반복이 돌아 버렸다... 대체왜?
뭔가 문제점이 바로 안 보여서 지피티한테 물어봤다. 여기서 보이는 사람 있으신지...
정답은 바로

그렇다! 짝수일때 i가 변화하지 않아서 무한반복을 돌았던 것임ㅋㅋㅋㅋㅋ 바보...
그래서 평범하게 i++; 를 바깥으로 빼줬다.
public static void main(String[] args) {
int i = 0;
int result = 0;
// 0부터 10까지 중 홀수들의 합을 구하세요.
while (i <= 10) {
if (i % 2 == 1) result += i;
i++; // 여기에서 증가시켰다.
}
System.out.println(result);
}
멀쩡하게 잘됐다. 그리고 짱구를 굴려서 조금 더 짧게도 만들어봤다.
public static void main(String[] args) {
int i = 0;
int result = 0;
// 0부터 10까지 중 홀수들의 합을 구하세요.
while (i++ < 10) { //여기서 증가시켰다
if (i % 2 == 1) result += i;
}
System.out.println(result);
}
이런것도 해봄. 근데 0이 들어가지 않아서 0부터 10까지를 모두 탐색하지 않는 것이 조금 불편하기는 하다. 프로그래밍으로 문제해결한 것이 아니라 조건에 맞게 수학적으로 꼼수 부린 느낌? 무슨소린지 나도 모르겠다. 참고로 i랑 result 정의해준 기본 틀은 깨지 않으려고 했다.
아무튼 오늘은 여기까지