싸피 입과하면서 만든 백준 아이디가 드디어 골드를 달성했다.
알고리즘 수업을 들으면서, 알고리즘 문제해결 역량이 정체한 것 같다는 느낌을 받았다. 분명 열심히 공부를 하고 있는건 같은데, 내 실력은 싸피 입과 전과 크게 다르다는 느낌을 못받았기 때문이다.
그래서 강사님께 알고리즘 학습의 방향에 대한 조언을 구했더니 크게 두 가지 정도를 이야기해주셨다.
1. 어느 정도 실력을 달성하기 전까지는 문제를 많이 풀어볼 것
2. 문제를 고를 때는 사람들이 많이 풀어본 문제 위주로 선정할 것
사람들이 많이 풀어본 문제는 일단 문제에 치명적인 오류가 없을 가능성이 높고, 문제 난이도가 너무 낮거나 너무 높은 일이 잘 없기 때문이라고 하셨다.
그래서 우선적으로 백준 골드를 달성하는 것을 목표로 삼기로 했다. 목표 달성을 하기 위해 나름의 학습 가이드라인도 세워보았다.
1. 클래스 점수 없이 골드 달성하기
2. 내 티어보다 같거나 높은 문제를 많이 풀어보기
일단 문제를 많이 풀어보는 것이 목적이므로 클래스점수가 아니라 문제 점수로만 골드를 찍어 보는 것을 목표로 했다. 그러면서도 너무 쉬운 문제는 도움이 되지 않을 것 같고, 물골드가 되고 싶지도 않았기 때문에 내 티어보다 살짝 높은 문제를 많이 풀어보기로 했다.
그러다보니 실버1의 문제들을 많이 풀게 되었다. 솔브닥에서 티어별 문제를 푼 사람 수대로 정렬해놓고 위에서부터 하나씩 풀어갔다.
그리고 문제를 풀 때는 바로 IDE에 작성하는 대신 노트에 미리 해결 방법을 설계해놓고 풀었다. 이 부분을 싸피에서는 항상 강조하는데, 좋은 설계는 문제 해결 시간을 줄여줄 수 있다는 것이다.
코드를 작성하고 터지면 디버깅을 돌리는게 아니라 인풋 데이터 크기를 고려했을 때 시간 복잡도가 지나치게 높진 않은지, 설계한 방법대로 했을 때 원하는 대로 아웃풋이 나오는지, 반례가 있지는 않은지를 항상 사전에 고민하는 습관을 들이고자 노력하는 중이다.
골드를 달성하면서 느낀 성장 포인트는 크게 두 가지다. 첫번째는 내가 약한 유형을 발견하고, 약점을 어느 정도 보완할 수 있었다는 점이다.
문제를 많이 풀다보니, 내가 dp에 약하다는 것도 금방 발견할 수 있었다. 처음에는 dp 적용 자체가 익숙치 않아서 순수한 완전 탐색으로만 문제를 풀다보니 시간 초과가 빈번하게 발생했기 때문이다.
그리고 어느정도 dp가 필요한 케이스들이 눈에 보이면서는 케이스를 일반화하여 점화식을 세우는 것에 어려움을 겪었다. 다행히도 실버1 문제 중에는 dp를 활용할 수 있는 문제들이 많았기 때문에 문제를 풀면서 dp를 설계하는 것을 여러번 연습할 수 있었다. 그림으로 케이스를 그려보면서 설계해보는 것이 도움이 많이 되었다.
두번째 성장 포인트는 문제에 대한 접근 방식을 떠올리는 것이 더 수월해졌고, 그로 인해 문제 해결 속도도 빨라졌다는 부분이다. 골드 달성 직전에는 싸피 과제를 제외하고, 백준만 하루에 대여섯문제씩 푸는 것도 가능해졌다.
골드 달성과 동시에 자동으로 클래스3이 달성되어 노클래스 골드 인증샷을 못찍은 것이 아쉬워 AC 레이팅표로 대체 ㅎㅎ
https://www.acmicpc.net/workbook/view/1152
문제집: 삼성 SW 역량 테스트 기출 문제 (baekjoon)
www.acmicpc.net
앞으로는 우선 SW 모의 A형 시험이 얼마 남지 않은 만큼, 삼성 SW 역량테스트 기출 문제를 꾸준히 풀면서 기존에 풀던 것보다는 조금 더 난이도 있는 알고리즘 문제들에 도전해보려고 한다.
'Writing' 카테고리의 다른 글
[싸피일기] SW 역량테스트 A형 대비 스터디 회고 (A+ 취득) (0) | 2024.03.14 |
---|---|
[싸피일기] Web(front) 페어 프로그래밍 회고 (1) | 2024.02.24 |
[싸피일기] 컴퓨터 구조 + 운영체제 CS스터디 회고 (1) | 2024.01.28 |
[SSAFY] 싸피 11기 비전공자 최종합격 후기 (면접 준비 자료 공유) (3) | 2023.12.21 |
[SSAFY] 싸피 11기 비전공자 1차 합격 후기 (에세이 작성 팁) (1) | 2023.12.08 |