지난포스트 (deprecated)/Daily Life (deprecated)

[후기~ing] 정보처리 자격증 시험

.log('FE') 2018. 9. 24. 12:05
728x90
반응형
이 글은 저처럼 비전공자 이지만 IT로의 취업준비를 위해 그리고 가산점을 위해 정보처리 자격증 시험을 준비하시는 분들을 위해 도움이 될까 해서 적어보는 글입니다.



단도직입적으로 개인적인 생각을 적어보자면 자격증자체가 취업의 당락을 좌우하는 키포인트는 아니라는것입니다.

 

실기가 보기의 답을 고르는것이 아닌 필답형태로 바뀌어서 난이도가 올라간 부분은 있지만 그래도 이 자격증 시험으로 취업의 변별력을 얻지않는다는건 모두 잘 아는 부분일거라고 생각합니다.

 

그래도 저는 이 자격증을 준비하는 이유는 적어도 최소한 이정도 자격증은있고 여기에 나오는 알고리즘이나 데이터 베이스정도의 지식은 당연히 알고 있어야 하지 않나 하는 생각에 준비하고 있습니다.

 

필기는 산업기사/기사 둘다 합격한 상태이고 다음주면 실기시험도 보러가게됩니다.

 

우선 필기는 간단히 후기만적고 실기에 대해서 개인적인 정리를할겸 적어보려고 합니다.

 

 

뭐 딱히 잘난것없는 성적표입니다만 예상하고 목표했던대로 얼추 된것같습니다.

 

필기는 과목별 40점 이하면 과락 이고 전체과목의 평균이 60점이 넘어야 합격 이 가능합니다.

 

전략은 2과목이 제일 어려웠기때문에 2과목은 '과락만 하지말자' 였고

 

나머지 과목에서 점수를 끌어올리려고 노력을 많이 했던것같습니다.

 

공부기간은 약 2주정도 준비했었고 두꺼운 시험용책이 아닌 요약본만 정리해준 ''OO공 SUMMARY" "이기쥬히" 라는 카페에서 자료를 내려받아 요약본과 기출문제풀이를 하였고 "전자문제집 CBT [http://www.comcbt.com/]" 도 적극 활용 하였습니다.

 

아! 혹시 시험을 기사와 산업기사 모두 치시려는 분들은 한장소에서 모두 시험치는것이 가능하니까 (기사와 산업기사 시험시간이 다름) 꼭 빠르게 접수해주시기 바랍니다. 안그러면....정원이 생각보다 빨리 차서 저처럼 따로보게되면 많이 괴롭습니다. (오전시험 망한것같아서 오후시험은 그냥 포기할까 생각했습니다..ㅋㅋㅋ)

 

 

 

실기시험

 

여기서부터는 후기성격보다는 이제 2주남은 시점에서 조금 정리를 해볼겸 그리고 무조건 한번에 붙자 라는 의지를 좀더 강화하기위해 꼭 합격후기를 쓰기위한 다짐의 과정이라고 보시면 될것같습니다.

 

실기는 과락이 없습니다. 그냥 60점만 넘으면 된다고 합니다.

 

필기합격하고나서 기간은 약 한달 반이 주어집니다.

 

과목별 배점입니다.

 

과 목 배 점 특 징
실무 알고리즘 응용 25 비전공자는 흐름을 이해하는데 시간이 많이 필요
데이터베이스 실무 응용 25 마찬가지 이해하는데 시간이 필요하고 암기도 필요
업무 프로세스 실무 응용 15 암기와 긴 문장의 흐름의 파악이 필요
IT 신기술 동양 및 시스텝 관리 25 그냥 무조건 암기...
전산 영어 실무 10 암기와 KEY 포인트 단어들을 연결

 

 

전체적인 배점과 목표인 60점을 넘겨야하는걸 감안하면 모든 과목에 대해 공부를 해야합니다.

 

집중은 알고리즘, 데이터베이스, IT 신기술에 집중하려고 합니다.

 

나머지는 암기와 문제풀이를 통해서 문제를 풀 수 있을 정도만

 

알고리즘에는 C 와 JAVA 그리고 데이터흐름도를 보게되는데 비전공자는 솔직히 외계어같고 막막합니다.

 

그래서 실기는 요약본이 아닌 기본교재가 필요하고 더불어 동영상강의가 제공되는걸 선택하면 될것같습니다.

 

"전자문제집 CBT" 에서도 실기관련 동영상을 제공합니다만 약간의 아쉬운부분이 있어서 꼭 동영상으로 설명해주는 교재를 구매하시길 추천합니다.

 

 

알고리즘

 

정보처리에서 나오는 알고리즘의 종류로는

 

수열

수학

자료구조

배열

실무응용알고리즘

 

이렇게 크게 나눌수 있고 세부적으로는

 

수열

1~100까지의 합계

1-2+3-4+5-6+7......+99-100 의 합계

-(1/2)+(2/3)-(3/4)+(4/5)-(5/6).....-(99/100)의 합계

1+2+4+7+11+16+22+.... 로 증가하는 수열

1!+2!+3!+4!+5!+.....+10! 의 합계

피보나치수열 (1+1+2+3+5+8+13+..)의 합계

 

수학

소수

최대공약수,최소공배수

약수구하기

소인수분해구하기

진법변환

최대값, 최소값 구하기

5의 배수의 개수와 합

7에 가장 가까운 수 구하기

보수구하기

그레이코드변환

 

자료구조

선택정렬

버블정렬

삽입정렬

석차구하기

이분검색

병합

스택

 

배열

기본 5행 5열

직각삼각형만들기

ㄹ 자로 채우기

다이아몬드 만들기

모래시계만들기

오른쪽에 빈삼각형만들기

이등변 삼각형만들기

90도회전하기

달팽이만들기

대각선으로 채우기

마방진

행렬변환

 

실무응용

화폐의 종류별 매수 계산

역순으로 숫자더하기

숫자의 좌우 위치 변경

 

뭐 이렇게만 봐도 양이 많아 보이는데 여기서 몇문제 안나오는것같아요 근데 배점은크고

한문제에 답을 여러개 적는형식으로 나오게되는데 부분점수가 따로 있다고 합니다.

 


알고리즘을 하면서 가장 중요한건 디.버.깅 그리고 더 중요한건 바로 예측을하면 안된다는겁니다.

 

디버깅은 내가 입력한 답들에 의해서 알고리즘이 제대로 돌아가는지 확인하기위한 절차이고 중간까지 맞았다고 답이 아닐수 있습니다. 꼭 10회 또는 20회정도 는 디버깅을 통해서 정말 맞는지 확인을 해야합니다.

 

예측을하면안된다는말은 이 알고리즘은 컴퓨터가 정해진 작업을 수행할수 있도록 컴퓨터방식의 사고방식을 위한겁니다.

 

사람은 1+1하면 2 가 그냥 나오지만

 

컴퓨터는

 

A = 1
B = 1


 

각각 변수지정


 

SUM = A + B


 

출력 SUM


 

 

즉 이 단순한 덧셈을하는데 필요한 변수가 3개나 있어야합니다.

 

물론 알고리즘은 더 복잡한 메커니즘이고 규칙을 찾아내서 반복작업을 빠르고 오류없이 정확하게 하기위한 작업입니다.

 

이러한 컴퓨터적인 사고방식이 필요합니다. 어느것하나 그냥 예측으로 풀어선 안됩니다.

 

보통은 알고리즘 순서도를 주고 빈칸을 뚫어놓고 거기에 값을 채우라고 나옵니다.

 

 

위의 알고리즘은 1~10까지의 합을 구하라는 알고리즘이고

 

변수는 i, J 가 주어지고

 

i = 0, J = 0 으로 초기화를 시켰습니다.

 

컴퓨터는 변수만 지정해줘서는 초깃값이뭔지 알지못하기 때문에 초기화는 필수작업입니다.

 

다이아몬드는 조건문을 담고있고 조건에 맞으면 다시 위로 올라가서 해당식을 수행하고

맞지않으면 밑으로 내려가서 i 와 J 를 출력하게 됩니다.

 

저 알고리즘이 1+2+3+4+5+6+7+8+9+10 까지 나와야 합니다. 그럼 빈칸에는 뭐가 들어가야 할까요

 

우선 이 수열의 규칙은 1부터 시작해서 10까지 1씩 증가 한다는겁니다.

 

알고리즘문제에는 항상 변수에 대한 설명도 함께 주어집니다.

 

i : 1씩 증가되는 숫자가 저장될 변수
J : i 가 누적되어 저장될 변수


그럼 1부터 시작해야하고 i 는 알고리즘이 수행될때마다 1씩 점점 증가해야합니다.

 

그럼 i = i+1 로 나오고 첫번째 빈칸에 들어갈수 있을것같습니다.

 

J 는 i가 누적될 변수니까 즉 1+2+3+4...+10 까지의 값이 점차 누적될 변수입니다.

 

J = J + i 라는 값이 나올수 있을것같습니다.


 

 

디버깅방식입니다.

 

i 는 1씩 증가되는 값이 들어오고 J 는 그 합이 누적되고있습니다.

 

여기서 모든 문제를 다 풀이하면서 진행하기엔 어려움이있고

 

혹시 문제풀다 질문이 있으신분들은 댓글을 달아 주시기 바랍니다.

 

수열은 비교적 간단한 편입니다. 천천히 디버깅을 진행하다보면 문제는 금방 풀리는 편입니다.

 

저한테 힘들었던 부분은 사실 수학부분인것같습니다.

 

수학알고리즘에 나오는 용어들을 몇가지 정리하겠습니다. 이미 아시는 분들은 안보셔도 상관없습니다.

 

1. 소수

소수는 1보다 크며 1과 자기 자신만을 약수로 가지는 수를 말합니다.

4는 1,2,4 가 약수라 소수가 아니고

5는 1,5 즉 1과 자기자신만 약수를 가지기때문에 소수입니다.

 

알고리즘에서 소수를 구하는 방식은

 

3개의 변수를 선언합니다.

 

A : 소수인지 판별하기위해 입력받은 숫자가 저장될 변수

i : A보다 1 작은 수가 저장될 변수

J : 2부터 i 까지 1씩 증가되는 숫자가 저장될 변수

 

A는 5라는수를 입력받아 소수인지 아니지 확인하는 절차를 거치게 됩니다.

즉 A에는 어떤값이 들어와도 상관없습니다.

 

i 와 J 는 현재 어떤값이 들어가있는지 알지못하기때문에 초기화가 필요합니다.

 

주어진 조건에서 J는 2부터 i까지 1씩 증가한다고 했으니

 

J = 2 로 초기화가 가능할것같습니다.

 

여기서 J를 2로 초기화하는 이유는 주어진 A를 2부터 A-1 즉 4까지 증가시키면서 나누려고 하는 방법을 사용합니다.

 

여기서 i = A-1   볼수 있을것같습니다. 주어진 조건에서 A보다 1작은 수가 저장될 변수라고 하였습니다.

 

i의 역할은 J가 1씩 증가할때 어디까지 증가할건지 상한선을 정해주는 열할을 합니다.

 

즉 주어진 A값까지 나눠보지않아도 그 밑의 숫자들이 나누어서 0이 나오지않으면 A는 소수로 판별됩니다.

 

정리

 

A 에는 어떤값이 와도 상관없고 A는 알고리즘수행을 통해 소수인지 아닌지 확인받게 됩니다.

J 는 2부터 시작하여 1씩 증가하며 A를 나누어 0인지 아닌지 판별하고 0이 아니면 +1씩 증가합니다.

i 는 A-1의 변수가 들어와 J의 증가값의 상한선을 지정해 줍니다. 즉 J가 i값의 숫자가 될때까지 A를 나누어 0으로 떨어지지않는다면 A 는 소수라는것이 확인이 됩니다.

 

출력문에는

나머지가 0이되면 "소수아님"

끝까지 0으로 나누어 떨어지지 않으면 "소수" 를 출력하고 알고리즘수행이 끝나게 됩니다.

 

 

 

2. 최대공약수, 최소공배수

 

최대공약수는 두수가 공통으로 가지고 있는 약수 중 가장 큰값

최소공배수는 두수가 공통으로 가지고 있는 배수 중 가장 작은값

 

필요한변수

A : 첫번째값이 저장될 변수

B : 두번쨰값이 저장될 변수

BIG : 입력받은 두수중 큰 수가 저장

SMALL : 입력받은 두수 중 작은 수가 저장

MOK : 큰수를 작은수로 나눠 몫이 저장될 변수

NMG : 큰수를 작은수로 나눠 나머지가 저장될 변수

GCM : 최대공약수가 저장될 변수

LCM : 최소공배수가 저장될 변수

 

풀이

 

우선 A와 B에 임의의 값을 넣어보자

A = 15

B = 10

 

우선 두수의 대소 여부를 판단

 

A<B or A>B

 

큰값이 BIG에 저장 , 작은값이 SMALL에 저장

 

MOK = BIG/SMALL (큰수를 작은수로 나눠 몫이 저장될 변수)

NGM = BIG-(SMALL* MOK) (나머지 구하는 공식)

 

이때 나머지가 0이 나오게되면 이때  SMALL이 최대공약수가 된다.

만약 0이 아니라면

BIG = SMALL

SMALL = NMG

가 들어가서 다시 알고리즘을 수행한다.

 

최대공약수가 구해졌다면

 

LCM = AxB/GCM

 

주어진 두수의 곱을하고 최대공약수로 나누어주면 최소공배수의 값이 구해집니다.

 

그리고 GCM, LCM 을 출력하고 끝난다.

 

이 과정에서 두수의 값은 알고리즘을 풀기위해 임의로 집어넣고 시작하게되지만

 

나머지 부분은 모두 빈칸으로 나와 답을적으라는 방식으로 문제가 출제될수있습니다.

 

어떤 부분이라도 빈칸으로 나올수 있기때문에 전체적인 흐름의 이해가 무엇보다 중요합니다.

 

 

 

※ 배열이 나오기 시작하게되면 배열의 시작점이 알고리즘순서도와  C, JAVA 에서의 표현법이 다릅니다.

 

알고리즘순서도

A[1] A[2] A[3]

 

C, JAVA

A[0] A[1] A[2]

 

즉 이 부분에 대해서 정확히 하려면 디버깅을 꼭 해봐야합니다.

 

또한 초깃값 설정이 항상 1,0 이런식이 아니라 K=i 의 형태나

 

이미 배열의 시작점부터 K = 1 or 2 이런식으로 지정을 해주고 시작할때도 있습니다.

 

우선 여기까지만 쓰고 추가적인 정리사항은 또 올릴예정입니다.

 

시험치는 모든 수험생들 그리고 나도 꼭 한번에 합격하길 바랍니다.

 

 

 

code-reading 블로그에 방문해 주셔서 환영합니다.
댓글은 모두 환영하니 많이 달아주세요.

 

728x90
반응형