어떤 경우에는 do while문에서 변수의 범위를 '<'으로 설정하고 어떤 경우에는 '<='으로 설정하는지
잘 구분이 안 갑니다.
177페이지 문제를 보면 p에 77이란 숫자가 대치될 때까지 연산하지만, 2번 괄호에는 p<77이 들어갑니다.
178페이지 문제에서는 a에 10이란 숫자가 대치될 때까지 연산하는데, 2번 괄호에 a<=10이 들어가고요.
둘 다 문제의 마지막 항 숫자까지 대치되는 건 똑같은 것 같은데 어떨 때는 <, 어떨 때는 <=를 사용하는지
변수 범위에 대한 설명 부탁드립니다!
안녕하세요 길벗수험서 운영팀입니다.
do while에서 조건문이 있는 위치와 증가값이 부여되는 위치를 고려하면 계산이 가능하나, 좀 더 쉬운 방법은 마지막 값 또는 마지막 값-1을 디버깅하는 것이 가장 간편합니다.
int i=0;
do {
[코드]
i++;
} while(i<10);
위의 do~while문은 i가 0일 때 [코드]를 수행한 후 i++을 수행하고, i가 9일 때 [코드]를 수행한 후 i++을 수행하여 10이 되고 i<10 조건을 만나 빠져나가게 됩니다.
int i=0;
do {
i++;
[코드]
} while(i<10);
위의 do~while문은 i++을 수행하여 i가 1일 때 [코드]를 수행하고, i가 10일 때 [코드]를 수행한 후 i<10 조건을 만나 빠져나가게 됩니다.
두 개의 do~while문은 동일하게 10번 반복하지만 i의 값의 변화와 [코드]가 수행되는 위치가 변경됨을 알 수 있습니다. (첫번째 0~9 10회, 두번째 1~10 10회)
<나 <= 또한 위와 같은 선상에서 이해하시면 됩니다.
첫번째 do~while문에서 i<10이 아닌 i<=10으로 바꿔서 수행해보면, 두번째 do~while문과 동일하게 [코드]가 마지막에 수행되는 시점은 i가 10일 때 이겠지만, i가 0일 때 한번 더 수행되게 되는 결과가 발생하죠.(총 11번)
반복횟수는 조건문과 증가값을 고려하면 그대로 환산되나, 내부의 증가값의 위치나 수행해야할 [코드]의 위치에 따라 결과값은 변동이 발생할 수 있으니 마지막값이 어떻게 도출되는지 간단히 디버깅해보는 것이 좋습니다.
행복한 하루되세요 :)
-
관리자2019-05-21 13:53:06
안녕하세요 길벗수험서 운영팀입니다.
do while에서 조건문이 있는 위치와 증가값이 부여되는 위치를 고려하면 계산이 가능하나, 좀 더 쉬운 방법은 마지막 값 또는 마지막 값-1을 디버깅하는 것이 가장 간편합니다.
int i=0;
do {
[코드]
i++;
} while(i<10);
위의 do~while문은 i가 0일 때 [코드]를 수행한 후 i++을 수행하고, i가 9일 때 [코드]를 수행한 후 i++을 수행하여 10이 되고 i<10 조건을 만나 빠져나가게 됩니다.
int i=0;
do {
i++;
[코드]
} while(i<10);
위의 do~while문은 i++을 수행하여 i가 1일 때 [코드]를 수행하고, i가 10일 때 [코드]를 수행한 후 i<10 조건을 만나 빠져나가게 됩니다.
두 개의 do~while문은 동일하게 10번 반복하지만 i의 값의 변화와 [코드]가 수행되는 위치가 변경됨을 알 수 있습니다. (첫번째 0~9 10회, 두번째 1~10 10회)
<나 <= 또한 위와 같은 선상에서 이해하시면 됩니다.
첫번째 do~while문에서 i<10이 아닌 i<=10으로 바꿔서 수행해보면, 두번째 do~while문과 동일하게 [코드]가 마지막에 수행되는 시점은 i가 10일 때 이겠지만, i가 0일 때 한번 더 수행되게 되는 결과가 발생하죠.(총 11번)
반복횟수는 조건문과 증가값을 고려하면 그대로 환산되나, 내부의 증가값의 위치나 수행해야할 [코드]의 위치에 따라 결과값은 변동이 발생할 수 있으니 마지막값이 어떻게 도출되는지 간단히 디버깅해보는 것이 좋습니다.
행복한 하루되세요 :)