2023년 2회는 비개발자가 느끼기엔 굉장히 치사하고 더러웠다.
뭐가 치사하고 더럽다고 느꼈는가?
암호화 알고리즘을 통째로 외웠는데, 5점 / 책에도 강의에도 없던 내용의 프로그래밍 문제도 5점
이걸 변별력이 좋은 시험이라고 했어야하나? 프로그래밍 문제에 추가 문구로 " 단, 최소한으로 작성하라" / "단 프로그램밍 특성에 맞게 작성하라"라는 지문이 있을 때 무조건 내가 모를 수 있는 문제라고 생각하고 천천히 풀어봐야겠다.
어쨋든 암기한 내용보단 프로그램밍 문제에서 싹 털려버리는 새삼 나는 개발자랑은 멀구나 생각했다. (참고, 물론 현재 내 직업은 개발과는 거리가 있다. 비개발자이지만 IT 기업에 다니니까 한번 따보고 개발자를 이해하고 싶었을 뿐, 그래도 이제 포기할수는 없다.")
지금 보면 쉬웠던 문제는?
그게 오늘 작성할 C언어에 대한 내용이다. 전역변수 JAVA에서는 많이 들었는데, 다른 클래스에서 불러올 수 있는 변수라고만 기억했을 뿐 그 기능이나 개념은 자세히 알아본적이 없다. 오늘은 좀 자세히 알아보고자 한다.
정보처리기사 실기 C언어 문제 유형 2023년 2회 실기 기출
#include <stdio.h>
#include <stdlib.h>
char n[30];
char *test() {
printf("입력하세요: ");
gets(n);
return n;
}
int main() {
char *test1;
char *test2;
char *test3;
test1 = test();
test2 = test();
test3 = test();
printf("%s\n", test1);
printf("%s\n", test2);
printf("%s", test3);
return 0;
}
위 코드에 입력값은 홍길동, 김철수, 박영희이다.
나의 오답
아주 당당하고 확신한 마음으로 아래와 같이 적었다.
홍길동김철수박영희
왜? 그렇게 입력했으니까! 하지만, 그건 전역변수 기능따윈 개나 줘버려라는 생각이었다.
실제 답안
박영희박영희박영희
답안 풀이
제공된 코드에서 "홍길동", "김철수", "박영희"를 입력했을 때 "박영희"만 세 번 나오는 이유는 test() 함수 내부에서 gets() 함수를 사용하여 사용자 입력을 받을 때, 입력된 문자열은 n 배열에 저장됩니다. 그러나 test() 함수가 호출될 때마다 n 배열은 같은 메모리를 가리키게 되므로, 마지막에 입력된 문자열 "박영희"가 모든 포인터 변수 test1, test2, test3에 저장되어 같은 문자열을 가리키게 됩니다.
그렇다. 입력값이 저장되는 공간은 맨위에 char n[30];가 선언되었기 때문이다.
요런게 치사한거지만, 내가 몰랐던건 시험이 변별력이 높아진 것일 수도 있다. 나는 잘 모르기 때문이다. 갑자기 조금 우울해진다..
추가 내용
그런데, 왜 세번까지만 입력할 수 있지? 입력횟수는 안정했잖아? (비개발자로서의 질문)
그건, 세번을 뭘 입력할지 물었으니까(test 함수를 세번 불렀으니까)
test1 = test(); // 첫 번째 입력
test2 = test(); // 두 번째 입력
test3 = test(); // 세 번째 입력
네번 불렀으면, 네번 썼지.
마무리
자, 생각보다 단순한 풀이 과정일 수 있다. 즉, 꼼꼼해야한다는 것이 중요하다. 위에서 부터 천천히 내가 컴파일러가 되어야한다. 문제를 기출문제 방식으로 대입하는 풀이는 불합격으로 인도할 뿐이다.
나와 같이 비개발자이면서 2023년 3회 실기를 보는 분들이 꼭 합격했으면 좋겠고, 하기 싫어도 올해 마지막 힘을 쏟아 힘을 냈으면 좋겠다.
여러 문제를 쓸려고 했는데, 가독성이 떨어질 것 같아 쪼개서 포스팅하고자 한다.
'정보처리기사' 카테고리의 다른 글
[정처기 실기] 소프트웨어 개발 방법론 (0) | 2023.09.13 |
---|---|
[소프트웨어 구축] 소트프웨어 공학 - 정보처리기사 실기 대비 (0) | 2023.09.13 |
2023년 3회 정보처리기사 실기 대비 정리 문서 (1) | 2023.09.07 |
데이터 베이스 응용 SW기초 기술 활용 | RDBMS | PROCEDURE (0) | 2023.07.20 |
테스트 커버리지 (0) | 2023.07.17 |
댓글