밤새 예상문제은행 풀다보니 술술 잘 풀려서 좋다싶다가 갑자기 혼란이 오기 시작했습니다....ㅠ^ㅠ
봐주세요!
문제46) for (j = 4; j >= 0; -j)
for (i = 4; i > j; -i)
numAry[j] += numAry[i];
j = 4 , j 가 0보다 작으니 1감소 되어서 j = 3 이 되고,
그안의 for문으로 들어가
i = 4 여기서 .. i가 j보다 크니까 ( i(4) > j(3) ) 1감소되어서 i = 3 이 되어...
현재 j = 4 , i = 3 이 되는것 아닌지... 그리고 바로 밑의 numAry[j] += numAry[i]; 실행..
해설집에는 i가 4고, i가 j보다 크니까 for문 안으로 바로 들어가서
for문이 실행되는 것 같은데..
/
다른 문제와 비교했을 때,,..... (114쪽 문제34번)
for (i = 1; i <= 5; ++i, hap =+ i)
system.out.printf("출력문생략");
여기서는 i이 1 , 그리고 i가 5보다 작으니 i를 증가 시키고!!! hap 누적 후, system.out.printf 출력문을 바로 실행했어요.
/
for(int k = 0; k <= n; k++{
생략;
}
이 for문에서는 k가0 이고 k가 n보다 작을때까지 실행하라.
그래서 k=0 으로 시작해서 그 다음 문장을 실행하고 다시 반복할 때,
k가 1로 증가해서 또 들어가고... 이렇게 되길래
이 위의 문제for (i = 1; i <= 5; ++i, hap =+ i) 와 헷갈려서 ... 비교해보니 ++i vs k++ 후증가 선증가 의 차이점인가 싶더라구요.
for문에서 따로 이 개념에 대해선 안배운거같은데 ㅠ.ㅠ
혹시 이것과 상관있는건지요...?????;;
넘 헷갈려요 긴 글이지만.. 도와주세요.... 그만큼 간절합니당..ㅠ_ㅠ감사해요
안녕하세요. 길벗 수험서 운영팀입니다.
음.. 어떤 것을 설명해드려야 하는지 정확히 파악이 안됩니다.
먼저 마지막에 말씀하신 ++i, k++ 전치수식과 후치수식은 문제와 무관합니다.
전치수식과 후치수식이 영향을 주는 것은 한 수식 내에서 활용될 때 뿐입니다.
34번 문제(114쪽)를 바탕으로 for문을 정확히 이해하고 넘어가세요.
for(①; ②; ③) {
④;
}
위의 for문이 ④를 3회 반복한다고 가정했을 때, 순서는
1회 : ①, ②(조건 참), ④, ③
2회 : ②(조건 참), ④, ③
3회 : ②(조건 참), ④, ③
4회 : ②(조건 거짓) <탈출>
이것을 34번 문제에 적용한다고 가정했을 때,
①은 i=1, ②는 i<=5 ③은 ++i와 hap+=i, ④는 System.out.printf("합은%d %4d입니다.\n", i, hap); 입니다.
1. i에 1을 저장합니다.(초기값 적용)
2. i<=5를 비교합니다.(종료값 비교 후 조건이 맞으므로)
3. i, hap을 출력합니다.(반복문 수행)
4. ++i, hap+=i를 수행합니다.(증가값 적용)
5. 2~4번 과정을 반복합니다.(종료값 비교 후 조건이 맞는 동안 반복문 수행)
----------------------------------------------
이제 46번 문제를 두고 보겠습니다.
for (j = 4; j >= 0; --j)
for (i = 4; i > j; --i)
numAry[j] += numAry[i];
for(j)는 4부터 1씩 줄어들며, 4 3 2 1 0 이렇게 5회 반복합니다.
for(i)는 j의 회전 수 마다,
j i
4 0회
3 1회(4)
2 2회(4, 3)
1 3회(4, 3, 2)
0 4회(4, 3, 2, 1)
이렇게 반복하게 되겠네요.
물론 for(i)의 반복횟수 만큼 아래의 numAry[j] += numAry[i];를 수행하게 되겠으나, 이것은 각 수를 대입하면 간단히 해결되는 문제입니다.
추가적인 의문점이 있는 경우, 해당 의문을 구체적으로 질문해 주세요.
질문이 명확할 수록 정확한 답변이 가능합니다.
행복한 하루되세요.^^
-
*2018-09-27 21:36:14
안녕하세요. 길벗 수험서 운영팀입니다.
음.. 어떤 것을 설명해드려야 하는지 정확히 파악이 안됩니다.
먼저 마지막에 말씀하신 ++i, k++ 전치수식과 후치수식은 문제와 무관합니다.
전치수식과 후치수식이 영향을 주는 것은 한 수식 내에서 활용될 때 뿐입니다.
34번 문제(114쪽)를 바탕으로 for문을 정확히 이해하고 넘어가세요.
for(①; ②; ③) {
④;
}
위의 for문이 ④를 3회 반복한다고 가정했을 때, 순서는
1회 : ①, ②(조건 참), ④, ③
2회 : ②(조건 참), ④, ③
3회 : ②(조건 참), ④, ③
4회 : ②(조건 거짓) <탈출>
이것을 34번 문제에 적용한다고 가정했을 때,
①은 i=1, ②는 i<=5 ③은 ++i와 hap+=i, ④는 System.out.printf("합은%d %4d입니다.\n", i, hap); 입니다.
1. i에 1을 저장합니다.(초기값 적용)
2. i<=5를 비교합니다.(종료값 비교 후 조건이 맞으므로)
3. i, hap을 출력합니다.(반복문 수행)
4. ++i, hap+=i를 수행합니다.(증가값 적용)
5. 2~4번 과정을 반복합니다.(종료값 비교 후 조건이 맞는 동안 반복문 수행)
----------------------------------------------
이제 46번 문제를 두고 보겠습니다.
for (j = 4; j >= 0; --j)
for (i = 4; i > j; --i)
numAry[j] += numAry[i];
for(j)는 4부터 1씩 줄어들며, 4 3 2 1 0 이렇게 5회 반복합니다.
for(i)는 j의 회전 수 마다,
j i
4 0회
3 1회(4)
2 2회(4, 3)
1 3회(4, 3, 2)
0 4회(4, 3, 2, 1)
이렇게 반복하게 되겠네요.
물론 for(i)의 반복횟수 만큼 아래의 numAry[j] += numAry[i];를 수행하게 되겠으나, 이것은 각 수를 대입하면 간단히 해결되는 문제입니다.
추가적인 의문점이 있는 경우, 해당 의문을 구체적으로 질문해 주세요.
질문이 명확할 수록 정확한 답변이 가능합니다.
행복한 하루되세요.^^