안녕하세요. 길벗 수험서 운영팀입니다.
18년도 1회 기사문제인지, 산업기사문제인지 정확히 알려주셔야 설명이 가능합니다.
산업기사 1회 5번 문제는 전산영어와 관련된 문제이므로, 기사 문제라고 가정하고 설명드리겠습니다.
해당 문제는 교재 1권의 313쪽 SETION037 스택(STACK)의 변형문제입니다.
스택은 후입선출 방식의 데이터 저장을 말하는 것으로 필기 때 배운 내용일 것입니다.
317쪽 교재의 C 코드와 비교했을 때 다른점은
1. 스택의 최대 공간이 10이라는 점
2. 배열의 주소값을 나타내는 변수(top)가 증감할 때 선치수식 또는 후치수식을 이용했다는 점
3. push와 pop을 사용자가 직접 입력하는 것이 아닌, 코드에서 정하고 있다는 점
정도가 되겠습니다.
2번의 선치수식, 후치수식에 대해 상당히 주의하셔야 합니다.
이에 대해 정리하여 설명드리자면, 변수의 앞이나 뒤에서 수식하는 선치수식, 후치수식은 '한 수식 내에서' 사용하는 경우 어디에 있어도 동일한 결과를 출력합니다.
예를 들어,
1. for (int i=0; i<10; i++)
2. i++
위의 두 경우는 후치수식으로 사용되었으나 전치수식인 ++i를 써도 결과가 달라지지 않습니다. ++이나 -- 만으로 수식이 종료되기 때문입니다.
1번의 for문의 경우 'for 반복문'이라는 하나의 수식이지만 정확히는 초기값(int i=0), 조건문(i<10), 증가값(i++)으로 나누어져 '증가값'이 하나의 단일 수식으로 취급되기 때문에, 전치 후치 수식 중 어떤 것이 들어가도 같은 결과가 나옵니다.
이에 반해
1. a = 3 + b--
2. function(a++)
3. return(--b)
위의 세 경우는 전치, 후치수식의 영향을 받는 구문입니다.
1번의 경우 b의 후치수식으로 종료되는 수식이 아닌 이후 연산이 있습니다. 3에 b값을 더한 후 b를 1을 빼야 하죠.
2번의 경우 또한 a를 1 더하는 것에서 끝나는 것이 아닌 사용자정의함수 function을 호출해야 합니다. function(a)를 호출 한 후 a에 1을 더해야 하죠.
3번의 경우 b에서 1을 빼는 것에서 끝나는 것이 아닌 상위 프로세스로 반환해야 합니다. b에서 1을 뺀 후에 return으로 반환해야 하죠.
위 사항들을 염두해 두시고 다시 한 번 해당 문제를 해결해보세요.
만약 알고리즘 자체에 대해 이해가 안되신다면 313~314쪽을 읽어보신다면 도움이 될 것 입니다.
행복한 하루되세요.^^
-
*2018-10-05 11:33:10
안녕하세요. 길벗 수험서 운영팀입니다.
18년도 1회 기사문제인지, 산업기사문제인지 정확히 알려주셔야 설명이 가능합니다.
산업기사 1회 5번 문제는 전산영어와 관련된 문제이므로, 기사 문제라고 가정하고 설명드리겠습니다.
해당 문제는 교재 1권의 313쪽 SETION037 스택(STACK)의 변형문제입니다.
스택은 후입선출 방식의 데이터 저장을 말하는 것으로 필기 때 배운 내용일 것입니다.
317쪽 교재의 C 코드와 비교했을 때 다른점은
1. 스택의 최대 공간이 10이라는 점
2. 배열의 주소값을 나타내는 변수(top)가 증감할 때 선치수식 또는 후치수식을 이용했다는 점
3. push와 pop을 사용자가 직접 입력하는 것이 아닌, 코드에서 정하고 있다는 점
정도가 되겠습니다.
2번의 선치수식, 후치수식에 대해 상당히 주의하셔야 합니다.
이에 대해 정리하여 설명드리자면, 변수의 앞이나 뒤에서 수식하는 선치수식, 후치수식은 '한 수식 내에서' 사용하는 경우 어디에 있어도 동일한 결과를 출력합니다.
예를 들어,
1. for (int i=0; i<10; i++)
2. i++
위의 두 경우는 후치수식으로 사용되었으나 전치수식인 ++i를 써도 결과가 달라지지 않습니다. ++이나 -- 만으로 수식이 종료되기 때문입니다.
1번의 for문의 경우 'for 반복문'이라는 하나의 수식이지만 정확히는 초기값(int i=0), 조건문(i<10), 증가값(i++)으로 나누어져 '증가값'이 하나의 단일 수식으로 취급되기 때문에, 전치 후치 수식 중 어떤 것이 들어가도 같은 결과가 나옵니다.
이에 반해
1. a = 3 + b--
2. function(a++)
3. return(--b)
위의 세 경우는 전치, 후치수식의 영향을 받는 구문입니다.
1번의 경우 b의 후치수식으로 종료되는 수식이 아닌 이후 연산이 있습니다. 3에 b값을 더한 후 b를 1을 빼야 하죠.
2번의 경우 또한 a를 1 더하는 것에서 끝나는 것이 아닌 사용자정의함수 function을 호출해야 합니다. function(a)를 호출 한 후 a에 1을 더해야 하죠.
3번의 경우 b에서 1을 빼는 것에서 끝나는 것이 아닌 상위 프로세스로 반환해야 합니다. b에서 1을 뺀 후에 return으로 반환해야 하죠.
위 사항들을 염두해 두시고 다시 한 번 해당 문제를 해결해보세요.
만약 알고리즘 자체에 대해 이해가 안되신다면 313~314쪽을 읽어보신다면 도움이 될 것 입니다.
행복한 하루되세요.^^