포테이토 주식회사_IT 개발블로그
알고리즘 PS 수행능력 향상 본문
1. 구현력
구현력은 본인이 생각한 알고리즘을 그대로 소스코드로 구현하는 과정이다. 프로그램 순서도를 명확하게 만들고 사용해야 될 변수나 함수의 데이터 타입등을 올바르게 정하는 과정이라고 생각할 수 있다.
이 능력이 부족하면 문제를 풀 때 [대충 어떻게 하라는지는 알겠는데 코딩하려니까 한 줄도 못 짜겠다.] 라던지 [내가 지금 뭘 짜고 있는지 모르겠다.] [코드가 1000바이트가 넘어가면 엄두가 안난다.] [디버깅을 못 하겠다.] 라는 생각을 느끼게 된다.
구현력을 향상 시키기 위해서는 [내가 어떤 프로그램을 만들고자 하는지]를 명확히 해야한다. [무엇을 입력받아 어디에 저장하고 어떤 과정을 거쳐서 중간 결과로 무엇을 얻고 최종적으로 이런 결과물을 이렇게 출력한다.] 와 같이 순서도를 먼저 적고 이제 디테일하게 어떤 데이터 타입 또는 자료구조에 저장할 지 생각하는 것을 차근 차근 종이에 적어가면서 연습하는게 좋다.
천천히 적으면서 순서도를 명확히 그리는 연습을 자주 하면 곧 머리속으로 하게 되고 나아가 코딩하면서 동시에 생각하는 수준까지 될 수 있다.
2. 문제해결능력
내가 알고있는 알고리즘, 자료구조, 다양한 테크닉등을 지금 당면한 문제에 맞게 변형하여 적용하는 것, 문제를 창의적인 시각에서 접근하여 해결하는 능력은 가장 향상시키기 어려운 능력중 하나이다.
이 능력이 부족하면 문제를 풀 때 [ 어떻게 접근해야 할 지 모른다. ] [그래서 솔루션을 열었는데 내가 아는 알고리즘, 자료구조 ] 인 상황이다.
이 능력을 키우기 위해서는 [양질의 문제(30분 ~ 2시간 고민하면 해결 가능한 문제)를 푸는 것] [이전에 본인이 접근한 다양한 방법들을 잘 정리해 두는 것]이 좋다.
중위권에서 상위권으로 가고자 할 때 발목을 잡는게 결국 문제해결능력이므로 정말 벽을 뚫는다는 느낌으로 노력이 필요한 시점이다.
3. 배경지식
기초적인 프로그래밍 문법 및 알고리즘, 자료구조 등을 아는 것 선형대수학과 확률 등과 같이 기본적인 수학적 지식을 아는 것과 같은 능력이다.
이 능력이 부족하면 문제를 풀 때 [ 어떻게 접근할지 몰라서 솔루션을 열었는데 생판 모르던 외계어가 적혀져 있다. ] 인 상황이다.
제일 공부하기 쉬운 능력이고 시중에 있는 거의 모든 알고리즘 역량테스트 대비 강의 또는 책은 배경지식에 대해서 설명하고 있다. 제일 알려주기도 쉬운 능력이다. 다양한 매체를 통해 쉽게 공부할 수 있다.
상위권에 도달하기 위해서는 굉장히 지엽적인 자료구조나 알고리즘을 공부하기도 한다.
대부분의 알고리즘 입문자들은 단지 배경지식만 공부하고 [ 열심히 공부했는데 문제를 왜 못 푸는지 모르겠다. ] [ 나는 빡대가리인 것 같다 ] 등과 같은 한탄을 한다. [ 강의도 돈주고 사서 듣고 책도 사서 읽었는데 실력이 늘지 않는다. ] 와 같은 고민을 하고 있는 사람이라면 문제는 배경지식이 아니라 다른 능력이 아니었을까? 하고 생각을 해보도록 하자.
이제 대충 본인이 어떤 부분이 부족하고 어떤 부분을 중점적으로 노력해야겠는지 이해가 되는가?
그렇다면 본인이 PS를 왜 공부하는지 그 목표에 따라 공부 계획을 세워보자.
1. 구현력이 뛰어나 개념만보고 구현가능하시면 어느언어든 상관없습니다.
2. 그냥 c++로된 자료가 아주 많습니다 검색해보시면 문제풀이 대부분이 c++이 될것입니다.대부분의 자료도 c++ 기반이며, 교과서라 불리는 종만북도 c++로 작성되어있고 그래서 대부분 c++을 이용합니다.
3. 그리고 c++ 이라고 하지만, 깊은 C++ 내용을 필요로 하지 않습니다. 자바나 자바스크립트가 충분히 학습되셨다면, 2주면 충분히 보고도 남는시간입니다.
(입사를 위한 PS는 대부분 메모리를 다루지 않습니다. 대졸입사코테 기준으로는요.)
4. 그게 아니고, 굳이 파이썬을 하신다면, 유로인터넷강의가 많이 있습니다. 특히 인X런에 좋은 문제풀이가 있지만 올리면 광고라고 머라하실분이 있어서 적진않겠습니다. 파이썬으로도 충분히 가능합니다.
그리고 작년 카카오 대졸공개코테에서도 합격자중, 파이썬을 사용한 사람의 합격률이 가장 높았습니다.
즉 합격의 당락은 언어가 아닌, 개인 사용자의 역량입니다.
5. 그냥 C++ 과 파이썬중 자신있는 언어로 준비하세요. 둘다 자신없으면 그냥 C++ 을 공부하는걸 추천합니다.
6.작성하는중 윗분 댓글이 달려 약간 부과설명하자면, C++ 을 추천하는 이유는 단순히 많은 자료 와 문제풀이 때문입니다. 누적된 데이터양이 다르기 때문입니다.
'Programming' 카테고리의 다른 글
백엔드 공부순서 (0) | 2021.05.05 |
---|---|
성공하는 프로그래밍 공부법 책 참고사이트 (0) | 2021.05.02 |
필독 개발자들을 위한 웹사이트 모음 (0) | 2021.05.01 |
안드로이드 로드맵 (0) | 2021.05.01 |
iOS 로드맵 (0) | 2021.05.01 |