Duceswild

정처기 합격자발표 확인

지난번 합격여부 미리 확인하기로 한번 보긴 했지만, 그래도 다시 한번 확인해보고, 자격증을 받아야겠기에... 


(는 무슨... 합격되었다고 난리를 칠거라..)

아홉시 정각에 접속을 했습니다.. 저와 같은분들이 약 1796분 계시더군요.


합격확인에서는 개인별득점조회로 가시는 편이 편합니다. 전체 합격자 확인을 하면 응시번호가 나열되어서, 기억을 못하면 불편하고, 혹 기억을 해도 하나하나 봐야하니까, 불편하죠. 

그래서, 



Thank you!

생각보다 문제가 쉬웠던 관계로, 시험지 받자마자 당황해서 문제 풀고, 다섯번 검토하고, 그래놓고도 시간이 남아서 감독관 아저씨 보고 있다가, 나가도 되는 시간 되자마자 나와놓고는.. 

실수한것들 하나하나 등장하면서 조마조마 했는데, 다행히 합격은 했습니다. 

(그렇다고 정말 문제가 쉬웠다. 라고 하는건 아니고, 꼼꼼하게 보셔야 하는 부분들이 있어요. 인터넷으로 구할 수 있는 모든 문제들 다 풀어놓고 다 맞출 때까지 반복... 했으니까 그래도... 쉽게 느껴졌지만, 아무래도 처음 보는 분들은 준비 꼼꼼하게 하고 가시는걸 권해드립니다.)

이 시험이 합격되는지 여부에 따라 연말에 독학사 시험을 응시하느냐, 마느냐가 걸려있었던 터라, 걱정도 조금 했습니다만, 이제 준비를 또 하면 되겠습니다. 

그간 포스팅 안하고 조용하게 자료수집하고, 개인공부를 했는데, 앞으로는 다시 종종 올리도록 하겠습니다. 

교재를 교환을 하던지 해야할건데.. 

어쨌든 좋은 날입니다.^^




2018년 1회 정처기 실기 시험이 끝나고, 합격발표가 25일로 예정되어있죠. 

2회 실기시험 접수가 21일부터 25일까지니까, 사실 25일날 '합격' 또는 '불합격' 을 확인하고나면, '접수를 해야하는 경우' 시험장소 선택에 제약이 따를 수 밖에 없기도 합니다. 

반면 25일까지 기다리고 싶지 않은 분들도 계실텐데요, 

오늘! 

정처기 실기 결과를 확인해보았습니다. 외부 사이트에서 어떻게 하는지 올리던 글들이 있었는데, 그걸 적용해봤어요. 

바로 시작합니다. 
먼저 정보처리기사 실기시험에 접수를 합니다. 


시험 검색해서 넣고, 종목선택으로 들어가고, 

시험준비는 독학인데.... 어쨌든 종목선택까지 완료합니다. 

그러면, 


요렇게. 

합격의 경우에는 '실기접수가 불가', 그리고 아쉽게 다음 기회를 준비하셔야 하는 경우에는 '접수'가 나오게 된다고 하네요. 

그렇게 2018년 1차 정처기 실기까지 붙은걸 확인할 수 있었습니다. 

(전산상 오류가 아니길 빌어요.^^ )


벼락치기 모의고사용 모의고사 답안지를 만들어봤습니다.

그냥 찾아보다가, 잘 못찾겠어서 대충 만들어서, 필요에 따라... 

모의고사 이름 하나 써두고, 각 파트별 틀린 문제 갯수 표시하고, 전체 갯수 표시하고.. 뭐 그런..

실제 시험 답안지 양식이랑은 좀 다릅니다. 



벼락치기 모의고사용 모의고사 답안지를 만들어봤습니다.

그냥 찾아보다가, 잘 못찾겠어서 대충 만들어서, 필요에 따라... 

모의고사 이름 하나 써두고, 각 파트별 틀린 문제 갯수 표시하고, 전체 갯수 표시하고.. 뭐 그런..

실제 시험 답안지 양식이랑은 좀 다릅니다. 

엑셀로 받으셔서 더 수정하셔서 출력하셔도 되고, PDF로 받으셔서 쓰셔도 됩니다. 용지크기에 행 맞추기. 하면 얼추 그럴싸하게 나와요.

벼락치기를 한번 해봐야겠습니다.


요렇게 아주 단순하게 그렸습니다.




'학습장 > TOEIC' 카테고리의 다른 글

토익 SW 0.0.  (0) 2018.04.17
아주 단기간 열어둘까합니다.  (0) 2018.04.17

Code의 경우에는 일부러 다른 주석들은 다 지우고 늘어난것만 살짝 표기했습니다. 

하지만, 이전에 했던거랑 이건 거의 같으니.. 쉽게 이해되시리라 생각됩니다. 

혹, 이전의 code가 궁금하시면, 이 전 게시글을 보시면 되겠습니다. 

package algorithm_Basic;
import java.util.Scanner;
public class Math_AddingnCountingPrimeNumbers {
     public static void main(String[] args) {
           // TODO Auto-generated method stub
           int inputN;
           int compN = 1;
                                
           int divN;
           int sum = 0;
           int cntN = 0;   //소수가 나올 때 마다 소수의 개수를 세어줄 cntN을 선언 하고 초기화해줍니다.
           
           System.out.println("인간적으로 2보다는 큰 수 입력해주세요. 정수로요.\n");
           Scanner scan = new Scanner(System.in);          
                                                                      
           inputN = scan.nextInt();
           System.out.printf("입력하신 값 %d 이내의 소수는 \n\n", inputN);
           while (compN < inputN) {                        
                compN++;                                        
                divN = 2;                                       
                while (compN % divN != 0)
                     divN++;                                         
                if (compN == divN) {                       
                     sum = sum + compN;
                     cntN++;                            //소수가 등장하면 이전에는 더해주기만 했는데, 이번에는 그 소수를 더할 때 개수를 세어주는거에요.
                     System.out.printf("[%d] ", compN);
                }//if                                           
                                                                      
           }//while
           System.out.printf("\n\n이며, 소수의 개수는 \n\n%d개 이고,", cntN);
           System.out.printf("\n합계는 \n\n[%d] 입니다.", sum);
           scan.close();
     }//main
}//class

실행결과는 다음과 같습니다. 


이거.. 너무 쉽게 끝나서, 뭔가 찝찝하기도 합니다만,; 일요일에 오랫만에 토익시험을 보는지라 벼락치기를 조금 하려고요. 

프로젝트도 해야하는데.. 

하아.. 

그래도 하루한개정도 이상은 해둬야 저도 머리가 덜 굳을 테니, 계속 해보려고 합니다. 

좋은 밤, 좋은 하루 되세요. 


입력받은 수 이내의 소수의 개수와 합계구하기 입니다. 

사실 입력받은 수의 합계구하기를 알면, 이건 두개만 더 해주면 됩니다. 

  1. 소수가 등장할 때 마다 늘어나는 숫자 (선언해준 다음에 0으로 초기화해주고,)
  2. 소수가 나올 때 마다 하나씩 늘려주기.

정말 간단합니다. 물론 배열로 하는 것도 비슷하게 접근하면 아주 쉽게 마무리 지을 수 있어요. 

제일 중요한건 이게 소수인지, 아닌지 구별하는 방법에 달려있다고 보시면 되겠습니다. 




붉은 상자 넣은게 다에요.;;

code도 마찬가지입니다. 잠시 후에 바로 올려볼게요.

어젯밤에 잠시 Android를 가지고 이것저것 만져보다가 온갖 설정을 휘저어놓았는데, 오늘은 Spring도 그렇고, 온갖게 다 update를 하느라, Eclipse가 그 무거운 몸을 제대로 못가누는 일이 벌어졌습니다. 

package algorithm_Basic;
import java.util.Scanner;
public class Math_AddingPrimeNumbers {
     public static void main(String[] args) {
           // TODO Auto-generated method stub
           int inputN;
           int compN = 1;                                  // 아래에 while 문을 주고, 나누는 수를 2로 초기화할건데, 이게 2가 되어서 시작하면 while 문 안쪽
                                                           //에서 시작이 아니라 바닥부분에 줘야해요.
           int divN;
           int sum = 0;
           System.out.println("인간적으로 2보다는 큰 수 입력해주세요. 정수로요.\n");
           Scanner scan = new Scanner(System.in);          // 먼저 이걸 타이핑하고 나면, java.util.Scanner를 import 해야해요. ctrl, shift, o 를 누르면
                                                           // 쉽습니다.
           inputN = scan.nextInt();
           System.out.printf("입력하신 값 %d 이내의 소수는 \n\n", inputN);
           while (compN < inputN) {                        // compN이 inputN보다 작은 동안 수행할 while문을 줄거에요.
                compN++;                                   // 위에 적어놓은 것처럼, 2도 소수에 포함시키려고 여기서 더하고 시작할거에요.
                divN = 2;                                  // 일단 나누는 수를 매번 초기화해줘야 하니까, 먼저 주고,
                while (compN % divN != 0)
                     divN++;                               // 우선 나누고 나머지가 0이 되는 수가 아니면, 나누는 수를 1씩 증가시켜줄거에요.
                if (compN == divN) {                       // 그렇게 증가하다가 나누는 수가 0이고, 비교하는 수랑 나누는 수가 같은 경우 즉 소수인경우에는 합
                                                           //계에 더해줄거에요.
                     sum = sum + compN;
                     System.out.printf("[%d], ", compN);
                }//if                                      // 이걸 안묶으면, 이 안에서 비교하는 수가 증가되고 오류가 나더라고요; 보통 위의 if문 처럼 조건문
                                                           //과 실행문이 하나씩 있으면 굳이
                                                           // bracket을 안쓰기도 한대요.
           }//while
           System.out.printf("\n\n이며, 합계는 \n\n[%d] 입니다.", sum);
           scan.close();
     }//main
}//class

그럼 결과가 이렇게 나옵니다.



사용자 입력값보다 작은 소수의 합 구하기입니다. 



지난 23일에 했던 소수 판별하기에서 보셨던 것처럼, 0 또는 1은 제하고, 숫자를 입력받는다는 가정하에 시작하는거에요. 물론, 입력받을 경우 다르게 할 수 있겠죠.^^;

하지만 그렇게 하면 '1보다 작은 소수' 라는 데에서부터 오류가 생기니까, 이번에는 그냥 입력받는 '소수' 가 있을 정수로 하겠습니다. 

배경을 조금 달리 해봤는데, 역시 심미적센스는 별로인가봐요. 




package algorithm_Basic;
import java.util.Scanner;
public class Math_DefiningPrimeNumber {
     public static void main(String[] args) {
           // TODO Auto-generated method stub
           int inputN = 0;
           int compN = 0;
           int divN = 2;
           Scanner scan = new Scanner(System.in);
           System.out.printf("숫자를 입력하세요.\n\n");
           inputN = scan.nextInt();
           compN = inputN - 1;
           do { // 요새 do while 순서에 맛들렸나봅니다.
                if(compN <= 0) {
                     System.out.printf("[%d]\tis 1 or less!.", inputN); // 이건 그냥 1또는 1보다 작잖아! 출력하고 멈추기
                     break;
                }else if (divN <= compN) { // 나누는 수가 비교할 수와 비교해서 작은경우
                     
                     if (inputN % divN == 0) { // 입력한 수가 나누는 수로 나눠서 나눠떨어지는 경우
                           System.out.printf("[%d]\tis Not a Prime Number.", inputN); // 소수가 아니에요 출력하고 멈추기.
                           break;
                     } else { // 나누는 수가 비교할 수와 비교해서 작은데, 입력한 수가 나누는 수로 나눠떨어지지 않는 경우
                           divN++; // 나누는 수를 1 증가해서 다시 비교하기.
                     } // else
                } // 바깥쪽 if
                System.out.printf("[%d]\tis a Prime Number.", inputN); // 나누는 수가 비교할 수보다 크고, 나눠떨어지지 않은 경우. 즉, 자기 자신만 나눠지는
                                                                                           // 경우.
                break;
           } while (true); // do, while
           scan.close();
     }// main
}// class

1부터 5까지 하나씩 돌려보면 이렇게 나옵니다.





이렇게 입력된 숫자가 소수인지 아닌지 판별하는걸 해봤습니다.



수정~~~

  이 부분이 틀렸었어요. 다시... 수정했습니다. 1은 소수가 아니죠.?


그래서, 수정한대로 입력을 하면 이제 비교하는 숫자가 0 또는 그 이하인경우는 입력하는 숫자가 작은 수라고 별도로 출력을 하게끔 고쳤어요. 

0을 입력한 경우, 


1을 입력한 경우

이렇게 출력됩니다. ^^ 

다음것 하려는데 문득 1이 성가셨어요. 교재에서도 1이 있는 경우는 언급이 안되어있던데, 일단 돌려보고 아닌듯... 싶어서 해봤습니다. 
덕분에 조금 더 침착하게 보게 되었고, 좋네요.

물론 case를 써도 괜찮은데, if 써버렸어요. 



어제까지 수열을 마치고, 이제 '수학' 입니다. 

문득 중학교 2학년때 친구따라 강남간다고, 수학의 정석 문제를 풀던 친구를 보고 깊은 감명을 받아 수1의 정석을 구매해서 행렬만 보고 때려치웠던 기억이 나네요.ㅡ_ㅡ; 
게다가 수2는 엄두도 안나고, 수학에 흥미를 (이라고 쓰고 공부에 흥미를 읽습니다.).. 옛날 얘기는 이만 하고, 

그런 저도 풀 수 있었으니, 아마 보시면 충분히 보시고 이해하시리라 싶습니다.

아마 정보처리기사 필기를 보셨다면, 전자계산기와 네트워크 관련 문제들에서 log 라는 것도 종종 보셨을 텐데요. '샤논의 법칙?' 이라든가.. 

다행히도, 자바, 안드로이드, 오라클, 스프링, node, 뭐 어딜 봐도 아직까지는 그 이상으로 난해한 문제는 없었던 것 같습니다. 

그러니 '최소한 이정도만 하면, 프로그래밍하는데 당장은 지장이 없겠지.' 하고 접근해보면 어떨까 싶습니다. 그래서 가지고 있는 목차에서 단위를 나눠서 정리를 하려고요. 그 첫번째는 소수 (Prime Number) 입니다. 

먼저 소수의 간단한 정의부터 보면

'양의 정수가 1과 자기 자신 뿐인 1보다 큰 자연수' 로 정의 되며, 암호분야에서 중요성이 부각되고 있다. 라고 하는군요. 더 자세한 링크는 아래에 적어둡니다. 



그리고 이제부터 하나하나 해나갈 소수에 관련한 내용은 다음과 같습니다. 

Prime Number 1. 소수 판별 (while, if)

Prime Number 2. 소수의 합 구하기 (while, if)

Prime Number 3. 소수의 개수 구하기 (1차원 배열, do ~ while, while, if)

간단한 정의, 즉 '양의 정수가 1과 자기 자신 뿐인 1보다 큰 자연수'라는 걸 기준으로 잡고 먼저 소수 판별하기를 보겠습니다. 

아, 포스팅할때 제목을 보통 순서도와 Code를 ' 2 ',  ' 1 ' 이렇게 두었었는데, 순서도를 보고 coding을 해야 편해서.. 순서를 앞으로는 바꿀까 합니다.

순서도를 그려보면 아래와 같습니다.


 

보아두시면 좋으실 듯... 한건, 

divN과 compN 을 비교할경우, 

만약 inputN이 1인 경우에는 compN이 0이 되겠죠?, 혹은 inputN이 2인 경우에는 compN은 1이 되어 시작할거에요. 
그럼 나누는 수로 쓰이는 divN보다 작은 수가 되기때문에, 확실히 1, 또는 2인경우 달리 말해서는 무조건 소수인 경우를 제외시킬 수 있어서, 
비교할 때에 ' >' 크다가 적용돼요.  ' 설마 등호가 나올까.. 싶기는 하지만.. 신경이 쓰이더라고요.'

소수인지 판별하는 방법에는 이 외에도 제곱근을 이용하는 방법도 있어요. 

예를 들어, 25가 소수인지 판별할 때에는 25의 제곱근을 구하고, 위와 같이 2부터 시작해서 5까지 진행해서 나머지가 있는지 없는지를 보는 겁니다. 

(25의 경우는 나누는 수 가 제곱근 5가 되었을 때 나머지가 0이 되니까 소수가 아니고, 12인 경우는 3.XXXX 이렇게 나올텐데, 
2에서 나머지가 0이 되니까, 제곱근이 되기 전에 나누어 떨어지고, 소수가 아닌게 되는겁니다. 이런 경우는 SQR(X)를 사용해요. 
그럼 11의 경우는 (3 x 3 = ) 9 와 (4 x 4  =) 16 사이에 있으니까, 제곱근이 3.xxxx 이렇게 나올건데, 나누는 수를 2부터 시작해서 3까지 진행을 해도 나머지가 생기기 때문에, 
소수가 된다는 거지요. )

중요.?;;;


위와 같은 순서도대로 진행하는 경우, 1을 입력했을 때 code를 실행하면 1도 소수로 나오더라고요.; 

아무리 생각해도 아닌것 같아, code를 수정해보고, 그에 맞춰 순서도도 약간 수정을 했어요. 



Fibonacci 수열의 합계구하기의 code 입니다. 

보시기 깔끔하라고 일부러 Eclipse 에서 복사해서 가져오기 전에 자동정렬을 한번 하는데, 그렇게 하면 주석이 바로 붙어버리네요.; 

이렇게 입력받은 수가 아닌경우, 즉, 특정한 항까지의 합계를 구하는 경우에는 inputN 대신 그 항의 숫자를 넣어주시면 됩니다. 

package algorithm_Basic;
import java.util.Scanner;
public class Sequence_FibonacciN {
     public static void main(String[] args) {
           // TODO Auto-generated method stub
           int tempN = 0; // 중간에 써줄 수.. 그냥 0 주고 시작하겠습니다.
           int sum = 2; // 1+1은 이미 완료되었다고 전제하고,
           int cntN = 2; // 실행 횟수를 먼저 2를 줍니다.
           int firstN = 1; // 위에서 이미 1 + 1이 완료되어있고, 이제 1 + 1 + 뒤에 나올 2를 tempN에 넣어줄 수 있도록
           int secondN = 1; // firstN과 secondN 에 1로 초기화해줍니다.
           int inputN = 0; // 이번에는 input을 받아서 해당 항까지 진행하도록 할거에요.
           Scanner scan = new Scanner(System.in);
           System.out.printf("Fibonacci 수열의 합구하기. \n 숫자를 입력해주세요.");
           inputN = scan.nextInt();
           do {
                tempN = firstN + secondN;
                sum += tempN;
                cntN++;
                firstN = secondN;
                secondN = tempN;
           } while (cntN < inputN);
           System.out.printf("\n해당 Fibonacci 수열의 %d항까지의 합은\n", inputN);
           System.out.printf("\n%d이며, \n", sum);
           System.out.printf("\n마지막 항의 첫번째 수는  %d,\n두번째 수는  %d입니다.", firstN, secondN);
           scan.close();
     }
}


package algorithm_Basic;
import java.util.Scanner;
public class Sequence_FibonacciN {
     public static void main(String[] args) {
           // TODO Auto-generated method stub
           int tempN = 0; // 중간에 써줄 수.. 그냥 0 주고 시작하겠습니다.
           int sum = 2; // 1+1은 이미 완료되었다고 전제하고,
           int cntN = 2; // 실행 횟수를 먼저 2를 줍니다.
           int firstN = 1; // 위에서 이미 1 + 1이 완료되어있고, 이제 1 + 1 + 뒤에 나올 2를 tempN에 넣어줄 수 있도록
           int secondN = 1; // firstN과 secondN 에 1로 초기화해줍니다.
//         int inputN = 0; // 이번에는 input을 받아서 해당 항까지 진행하도록 할거에요.
           int inputN = 8; // 이번에는 input을 받아서 해당 항까지 진행하도록 할거에요.
//         Scanner scan = new Scanner(System.in);
//         System.out.printf("Fibonacci 수열의 합구하기. \n 숫자를 입력해주세요.");
//         inputN = scan.nextInt();
           do {
                tempN = firstN + secondN;
                sum += tempN;
                cntN++;
                firstN = secondN;
                secondN = tempN;
           } while (cntN < inputN);
           System.out.printf("\n해당 Fibonacci 수열의 %d항까지의 합은\n", inputN);
           System.out.printf("\n%d이며, \n", sum);
           System.out.printf("\n마지막 항의 첫번째 수는  %d,\n두번째 수는  %d입니다.", firstN, secondN);
//         scan.close();
     }
}



얼추 보니 피보나치 수열을 마지막으로 수열에 관한 단락은 끝이 났습니다. 

이제 수학과 자료구조도 진행해보고, 과년도 기출도 보면서 복습도 하고, 공부도 하는 시간을 가져볼 계획입니다. 

이제서야 Visio 한 파일 안에 여러 그림 들어간다는 걸 알았네요. '엑셀 다루는거랑 비슷할까?' 해서 건드려봤는데, 의외의 소득이었습니다.^^