아무튼!! SSAFY에서 기회를 더 많이 주면서 SW 역량 테스트의 등급을 따는 것을 팍팍 밀어주고 있습니다
우선 알고리즘 수업이 있습니다. 정말 알고리즘의 기본인 선형자료구조 (큐, 스택) 부터 비선형 자료구조인 그래프, 트리 까지 모두 알려주십니다
삼성 sw 역량 테스트에는 DFS/BFS나 시뮬레이션이 주로 나오지만 이러한 알고리즘 외에 고급 자료구조들도 알려주십니다!!
트라이, 세그먼트 트리 등도 배울 수 있습니다. 근데 확실히 어렵긴해요…
또한, 시험보기 1,2 주 전에는집중적으로 알고리즘 수업을 편성해줍니다
이러한 점이 정말 좋은 것 같아요. 원래 수업을 나가면 거의 주마다 시험이 있는데 진도를 안나가고 알고리즘 수업을 나가면 알고리즘 수업에만 집중할 수 있습니다!!
A형 준비과정
결국 아직 A형 시험을 한번도 봐보지는 못했지만 공부는 꾸준히 해오고 있습니다. 6월이면 볼 수 있을지 않을까요…? ㅠㅠ
저는 임베디드 반으로 주 언어를 자바로 쓰고 있습니다.
그런데 반의 거의 모든 사람이 C++을 사용해서 저도 넘어갈까 고민중입니다…
1.SW 역량 테스트 기출 문제 풀이
백준 온라인 저지 사이트에 보면 삼성 sw 역량 테스트 기출문제들이 올라와 있습니다.
상단의 문제집을 보시면 이렇게 문제들이 있습니다
이 문제를 몇 개 푸시다보면 아! 이런 문제가 나오는 구나 하실겁니다
이렇게 기출문제를 풀어보면서 문제의 유형을 익히고 파악해갔습니다
사실 저도 아직 다 풀지 못했지만.. 열심히 풀어봅시다~
2.sw expert academy 모의 문제 풀이
sw expert academy의 문제를 풀어보는 것도 매우 중요합니다
저는 전에 삼성 코딩 테스트 시험을 보러 갔다가 처음 사용해보는 플랫폼에 당황했었습니다. sw expert academy 플랫폼에서 시험을 진행하기 때문에 여기서 문제를 꼭 풀어봐야 합니다.
물론 SSAFY에서 위 사이트의 문제를 많이 풀이하니 SSAFY 교육생들은 문제없을 것 같습니다.
삼성 sw 역량테스트 스러운 문제들도 많이 있습니다. 모의 문제라고 해서 있는데요
사이트에 접속해서 문제 제목에 모의라고 검색하시면 많은 문제들이 나옵니다.
3.풀었던 문제 다시 보기
풀었던 문제를 꼭 다시 풀어보시길 권장드립니다
왜냐하면 공부하면서 실력도 계속 늘어가고 새로운 것을 알게되기 때문에
다시 새롭게, 더 쉽게 풀 수도 있기 때문입니다.
다시 풀어보고 전에는 이렇게 풀었구나! 왜 이렇게 풀었지? 하면서 풀면 또 나름의 재미가 있습니다~~
(전에 풀었던 코드와 그때 왜 이렇게 풀었는지 최소한 주석이라도 남겨두세요!)
4.추가 문제 풀이와 저의 공부 방법
이번엔 저 만의 공부법입니다!!
저는 저의 코드와 풀이를 깃(Git)과 블로그에 남겨둡니다.
위와 같이 레퍼지토리를 만들어서 문제를 풀고 올려두고 있습니다
문제를 풀고 난 후 사용한 알고리즘이나 자료구조, 풀이등을 markdown 언어로 README.md 파일에 작성합니다.
그리고 이를 다시 한번 정리하여 블로그에 업로드 합니다
이렇게 해두면 좋은점은 다른 문제풀 때 참조하기 편합니다!
문제를 풀다가 어? 이거 전에 풀었던거랑 비슷한대?
아 우선수위 큐 사용하면 될 것 같은데 어떻게 사용하더라??
할 경우가 많습니다.
이럴때마다 작성했던 제 코드를 보면서 아 이렇게 했구나 하면서 공부해나갑니다.
반복학습도 가능하고 다시 찾아가는 시간을 줄일 수 있습니다
또한 소소한 지식 공유의 즐거움이 있습니다.
문제를 풀다 막힌 사람들에게 코드와 풀이를 공유함으로써 보람을 느낍니다 ㅎㅎㅎ
두번째로 푼 문제의 다른 풀이들을 찾아봅니다.
정말 쉬운 문제가 아닌 이상 다른 사람들의 풀이를 찾아봅니다
백준 사이트의 경우 문제를 맞추면 다른 사람들의 풀이를 쉽게 볼 수 있습니다.
다른 사람들은 어떠한 알고리즘을 사용했는지, 어떻게 하면 더 최적화 할 수 있는지 파악합니다.
또한, 저 처럼 코드를 블로그에 공유하시는 분들이 많기 때문에 찾아봅니다. 저는 자바를 사용하지만 C++/C/JAVA 코드 관계없이 찾아봅니다. 어차피 로직은 같습니다. 파이썬도 보는데 파이썬은 극악으로 짧게 짜시는분들이 있어서 그런 건 이해하기 힘들어서 좀 피합니다..
5. 알고리즘 문제 풀이법
SSAFY에서 알고리즘 풀이에 대한 방법들을 배웠습니다. 정말 알고리즘 풀풀이 능통한 것이 아니라면 우선 완전탐색으로 풀어야 합니다.
처음부터 쉽게 풀려고 하다 보면 생각이 엉켜서 결국 문제를 풀지도 못합니다…. 저도 실제 경험해봤습니다
우선 이렇게 문제를 풀고 코딩실력을 늘려가는게 중요한 것 같습니다
아래는 제가 SSAFY에서 배운 내용을 정리해봤습니다
ㄱ.문제를 확실히 이해한다
우선 문제를 한 부분도 빠짐없이 이해해야 합니다.
또한 N값을 확인해야 합니다. N값의 범위를 보고 어떤한 알고리즘을 사용할지 결정해야 합니다 즉, 시간 복잡도를 생각해야 합니다
대충 1억번의 연산을 1초 걸린다고 생각하시면 편합니다
N이 1000이라면 n^3= 1,000,000,000 = 10초 입니다
N^2 = 1,000,000 = 백만 = 0.01초 즉 이중 for문 까지 사용할 수 있겠구나! 하고 판단할 수 있습니다
그리고 예제 데이터를 꼭 손검증 해봐야 합니다. 예제가 문제에 길게 자세히 설명되어 있습니다. 이를 손으로 하나씩 따라해보면서 어떻게 구하는지 파악해야 합니다
ㄴ.문제를 설계한다
구현하기전에 어떻게 구현할지 계획합니다.
ㄷ.구현한다
그리고 구현합니다. 구현시에는 단위 별로 테스트합니다. 이렇게 해야지만 어디서 값이 잘 못 되었는지 파악하기 쉽습니다.
저는 값을 입력받는 부분부터 모두 테스트합니다. 값이 잘들어왔는지 보고 그때부터 다시 구현을 시작합니다.