PS(Problem Solving) 공부 참고 자료

yujamint·2022년 4월 22일
1

PS

목록 보기
1/9
post-thumbnail

기록을 시작하며

PS 공부를 시작하기 위해 여러 사이트를 찾아보며 느낀 점은 자료의 양이 방대하다는 것이었다. 많은 정보들 사이에서 내게 도움이 되고 유익하다고 생각되는 정보는 따로 모아놓고, 앞으로 공부한 내용 또한 정리하기 위해서 벨로그를 시작하기로 마음 먹었다.


공부 계획

학부생 3학년인 나는 슬슬 PS를 공부해야겠다는 생각에 압박감을 느끼고는 있었지만 어디서부터 어떻게 공부해야 될지 감이 안 잡혔다.

구글링을 하고 여러 사이트를 들어가보며 보게 되는 공부법마다 과연 이게 현재의 나에게 최선인가에 대해 의구심을 품으며 계획을 어느정도 세웠다.

공부 계획을 세우는 데에 있어서plzrun님의 블로그의 이 게시글의 도움을 많이 받았다. (사실 게시글의 커리큘럼을 99% 따라하는 것이다.)

첫 번째로,

백준 강의를 들으면서 PS 공부의 방향성을 잡는 것이다. plzrun님은 온라인 강의 중에서 기초, 중급1, 중급2룰 수강할 것을 추천하셨다.(입출력부터 네트워크 플로우까지)

유료인 온라인 강의를 대체하는 공부 방법으로는 각 유형별 기초 수준에 해당하는 문제들을 풀어보는 것이다. 문제를 풀 때의 핵심은 다음과 같다.

  1. 문제를 푸는 시간이 1시간이 넘어 가면 그만두고 AC받은 코드 찾아본다.(꼭 설명이 달려있는 코드를 읽을 것)
    *입출력 문제는 10분으로 제한
  2. 문제를 푼 다음에는 반드시 다른 사람의 코드를 본다.
    *BOJ 랭킹 100위 내에 속하는 사람 중 그 사람의 코드를 보면 이해가 잘 되는 사람으로 선택한다.
    *처음부터 끝까지 하나하나 세밀하게 볼 필요는 없다.(로직이 어느정도 비슷해보이면 스킵하고, 다른 로직인데 참신하면 들여다보도록 하자)
    **도움이 필요하면 dotorya님이 운영하는 디스코드에 질문

이렇게 규칙을 지켜가며 문제를 풀어보면서 모르는 부분을 빠르게 채워나가는 것이다. 유형별 문제들은 다음과 같다.(BOJ 문제번호)

입출력 - 2557, 1000, 2558, 10950, 10951, 10952, 10953, 11021, 11022, 11718, 11719, 11720, 11721, 2741, 2742, 2739, 1924, 8393, 10818, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992


DP - 1463, 11726, 11727, 9095, 10844, 11057, 2193, 9465, 2156, 11053, 11055, 11722, 11054, 1912, 2579, 1699, 2133, 9461, 2225, 2011, 11052


정렬 - 2751, 11650, 11651, 10814, 10825, 10989, 11652, 11004


스택 - 10828, 9012, 10799


큐 - 10845


덱 - 10866


문자열 처리 - 10808, 10809, 10820, 2743, 11655, 10824, 11656


기타 자료 구조 - 1406, 1158, 1168


기초 수학 - 10430, 2609, 1934, 1850, 9613, 11005, 2745, 1373, 1212, 2089, 11576, 1978, 1929, 11653, 10872, 1676, 2004, 6588


그래프 - 1260, 11724, 1707, 10451, 2331, 9466, 2667, 4963, 7576, 2178, 2146, 1991, 11725, 1167, 1967


이분탐색/삼분탐색 - 1654, 2805, 2110, 10815, 10816, 11662


분할정복 - 11728, 1780, 11729, 1992, 2447, 2448, 1517, 2261


그리디 - 11047, 2875, 10610, 1783, 1931, 11399, 2873, 1744


완전탐색 - 1476, 1107, 1451, 9095, 10819, 10971, 1697, 1963, 9019, 1525, 2251, 2186, 3108, 5014, 1759, 2580, 1987, 6603, 1182, 2003, 1806, 1644, 1261, 1208, 7453, 2632, 2143

여기까지 푸는 게 4주 분량이고, 드디어 기초 공부를 끝낸 것이다.

두 번쨰로,

종만북을 공부한다. 종만북 공부 순서는 1권 수치해석(마지막 부분) -> 2권 -> 1권의 나머지 부분으로 진행한다.

세 번째로,

노란책을 공부한다.


공부하기에 앞서

일단 위 커리큘럼에 따라 공부를 시작할 것이지만, 몇 가지 의문점이 있다.

  1. 나는 Java 언어를 이용해서 PS를 공부할 예정인데, 언어에 대한 공부가 따로 필요하지는 않을까?
  2. 코딩 테스트에 있어서 실행시간이 가장 빠른 C++이 유리하다는 얘기를 들었다. 백엔드 개발자를 지망하고 스프링을 공부하는 나로서는 개인적으로 공부를 하는 Java와는 별개로 코딩 테스트용 언어로 C++을 공부해야 되나? 라는 생각이 든다.
  3. 참고한 게시글의 작성자인 plzrun님은 BOJ 강의를 들었기 때문에 BOJ 강의를 추천해주셨지만, BOJ 강의가 최선일까?

걱정이 있는 건 맞지만, 일단 숲을 보며 PS 공부를 하다보면 자료구조와 언어에 대한 이해가 따라올 것이라는 얘기에 따라 열심히 해볼 예정이다. 아직 위 계획의 첫 번째 과정도 시작하지 않은 터라 내용이 빈약하다. 이는 앞으로 PS 공부를 하며 정리할 내용들과 함께 채워나갈 예정이다.

profile
개발 기록

0개의 댓글