알고리즘은 대학교 필수로 대학을 졸업한 사람은 누구나 배우지만 실제 시험으로 보게 되면 생각보다 쉽지 않아

당황하게 되고 많은 알고리즘 책과 온라인채점사이트들이 있어서 본인의 노력 여하에 따라 실력을 무료든지 유료든지

늘릴 있는 방법이 많이 있지만 목표에 맞는 방법은 가이드가 필요해서 글을 쓰고 있습니다.  

 

제가 읽었던 "재능은 어떻게 단련되는가?" ( http://book.naver.com/bookdb/book_detail.nhn?bid=6348639 ) 보면

열심히 노력하는 사람이 많이 있지만 누구나 타이거 우즈가 없는 것은 타이거 우즈 만큼

'신중하게 계획된 연습' 하지 않았다고 합니다.

 

'신중하게 계획된 연습'이라는 것은 무작정 많이 열심히 하는 것은 아니고

현재 가장 부족한 것부터 필요한 부터 하는 것인데 이게 혼자하는 것은 힘듭니다.

아무래도 자신을 객관적으로 보지 못하기 때문이죠.

그렇다고 비슷한 수준의 사람들이 모인다고 효과적이지는 않는 같습니다.

물론 함께 하기 때문에 억지로라도 하는 효과는 있기는 합니다.

 

목표는 있지만 맨토가 있는 사람이 없다면 기출문제를 구해 풀어보는 것이 무엇보다도 중요합니다.

S사의 경우는 외부 유출을 금지하기 때문에 쉽지 않지만 합격한 선배라든가 온라인 후기를 보면 조각들은 찾아 있습니다.  

시험의 출제유형이라던가 난이도는 함부러 바꾸지 않기 때문에 기출 문제의 수준과 유사한 수준으로 밖에 없습니다.

출제자들에게 그런것을 요구하기도 하고요. 물론 법에 있는 내용은 아니니 출제자가 맘대로 내면

기출문제와 ~ 다르게 되기도하지만요.

 

4회에서 경우의 수를 공부하는 것이 도움이 된다고 했는데

기본 Problem Solving 위해서 추가로 고등학교 수학 도움이 되는 것을 찾아보면

 

1. 소수 구분 방법

2. 도형의 방정식

3. 밴다이어 그램 등이 있습니다.  

4. 진수 변환

 

1. 소수는 1 자신 이외로 나누어지지 않는 수인데 어디까지 나누어봐야 할까요?

    많은 수를 소수확인하려면 어떻게 해야 할까요?

 

2. 1 방정식, 2차방정식, 원의 방정식 등이 있는데 1,2 방정식의 , 아래에 있는 점을 구분하는 방법

    원의 방정식이 주어질때 원의 안과 밖의 점을 구분하는 방법  

 

3. 밴다이어그램에서 겹쳐진 부분을 2 계산하지 않는 방법  

 

4. 10진수 > 16진수 > 2진수 > 10진수

    수학시간에는 많이 해봤지만 %x %d %o 쓰지 않고 문자열 0x10 문자열 16으로 바꾸는 방법

 

문제를 적기는 팁에 시간이 많지 않아서 위와 같이 간단히 적어보았습니다.

 

백준, 30계단 등에 많이 있는 문제들이고 간단한 수학 문제라서 쉽게 보이지만

시험시간에 위의 내용에 스토리를 입혀서 문제가 나오면 이게 그거구나 하는 생각이 나지 않습니다.

그것도 1시간 30분만에 1문제를 풀어야 하니.  

 

요즘 학생들은 수능세대라서 스토리를 입힌 문제에 익숙하지만 알고리즘문제가 아닌 Problem Solving 문제는

스토리를 까서 알고리즘 문제로 바꾸는 것이 가장 먼저 해야 일입니다.  

 

괴니히스베르크 다리 라는 문제가 있었지요. ( https://ko.wikipedia.org/wiki/%EC%BE%A8%EB%8B%88%ED%9E%88%EC%8A%A4%EB%B2%A0%EB%A5%B4%ED%81%AC%EC%9D%98_%EB%8B%A4%EB%A6%AC_%EB%AC%B8%EC%A0%9C )  

결국 붓그리기 인데 위와 위와 같이 실제적인 상황을 주고 나서 한번에 있는 길이 있느냐? 하고 묻는 것이

Problem Solving인데 이것이 결국 한붓그리기이구나 하고 알는 것이 가장 먼저 해야하는 것입니다.  

 

#삼성_소프트웨어_역량_테스트

자꾸 자꾸 이야기가 산으로 가고 있지만 최근 모사의 입시 시험을 보면

3시간에 2문제가 나오고 있습니다.

 

1 문제는 컴퓨터로 과제를 많이 해봤으면 있을만한 문제

2 문제는 알고리즘을 이용한 Problem Solving 문제

 

1 문제의 경우는 예전에 도스시절 혹은 전용 게임기에서 봤을만한 내용을

아주 간단한 내용만 구현하는 것이 나왔던 같구요,

그래서 TETRIS, 팩맨, 범버맨, 뱀꼬리 잡기, 최근 에니팡  게임을 어떻게 만들면 될까를

평소에 고민해보면 도음이 같습니다.

찾아 보시면 후기등에 있는데 실제 이런 게임을 만드는 것이 아니고

메모리에 아이템들이 있는데 키입력으로 방향키등이 오면 처리를 하고

그럼 처리 결과를 보여주고 방향키로 움직였는데 아이템이면 먹고

벽이면 가지 못하고 이런것.

 

2 문제의 경우는 대표적인 알고리즘을 물어보지는 않고 DFS BFS 알고 완전탐색으로

모든경우는 찾아 있는 그런 문제가 나오는 같습니다.

제가 2번째의 수도쿠는 1 문제로 있고 2 문제로 있을 같습니다.

고등학교때 배웠던 순열/조합 등이 관련이 있는데 경우의 복습을 하면 많은 도움이 됩니다.

 

#삼성_소프트웨어_역량_테스트

많은 분들이 댓글을 주셔서 너무 높은 수준으로 올라가는데

제가 하고 싶은 내용은 그렇게 높지 않습니다.

 

딱 입사 시험에서 보는 온라인 통과하는 수준까지 도달하는 방법입니다.

 

"시험공부의 기술" 제가 감명?을 받은 책이 있었는데

만점을 받기 위해 공부하지 말고 딱 시험에 통과할 만큼만 한다

라는 것이 핵심입니다. 물론 딱 시험에 통과할 만큼이 중요하고 어렵고 핵심이지만

http://book.naver.com/bookdb/book_detail.nhn?bid=129615

 

모든 알고리즘 책에 나오는 복잡도를 계산하는 Big-O Notation 이 있습니다.

O(n^3), O(nlogn) 이 있습니다.

 

물론 가장 낮은 차수의 해법이 훌륭한 알고리즘이지만

일반인(올림피아드 수준으로 토할만큼 연습하지 않은)이  

3시간 동안 2문제를 훌륭한 수준의 답안 제출하기 쉽지 않습니다.

입력 조건을 봐서 입력 갯수가 얼마되지 않는다면 O(2^n) 도 훌륭한 답이 될 수 있습니다.

 

어제 소개드렸던(소개해주셨던) 온라인저지(온라인채점)사이트 들은

대회에서 나왔던 문제가 기본이기 때문에 O(2^n) 이 정도의 복잡도의 답안은

부분점수만 받고 Fail 됩니다.

 

그럼 이제 고민에 빠지지요. 대부분 온라인 채점 사이트는 많은 문제는 있지만 대부분 문제가

설명이 없기 때문에 조언을 해줄 수 만한 (이런 분은 정보올림피아드 출신정도) 사람이 없으면

하다가 말게 됩니다.

 

하지만 모사의 입사 시험 문제는 그 정도까지는 아닙니다.

 

한참 SW 인력을 확충할때는 국내 왠만한 SW 관련 학과 인력을 다 입사 시켜도 부족해서

회사내에서 직무전환을 해서 SW 인력을 만들정도 였고

물론 요즘은 그 정도는 아니지만 정보올림피아드를 풀만한 사람만 뽑는다면

인력충원을 할 수 없어서 입사 시험은 어렵지 않은 편입니다.

 

지금 처럼 온라인으로 시험 보지 않은 시절에는 기술 면접때

몇가지 문제를 주고 메모장?에 코딩을 한 후 설명하던 때가 있었는데

학점도 좋고 포트폴리오도 좋은데 코딩을 한줄도 못했던 사람들이 있어서

최소한의 코딩을 하는 사람을 뽑는 것으로 알고 있습니다.

(정말! 한 줄도 안쓰고 입사하면 열심히 하겠다고 했습니다.)

 

필요한 건 "정말 최소한의 코딩(+문제해결)입니다."

 

쓰다 보니 길어졌는데 제가 생각하는 최소한의 코딩이 무엇인지는 다음에....

(절단 신공아닙니다.)

 

#삼성_소프트웨어_역량_테스트

+ Recent posts