기타

2022년 [삼성전자 DX] 동계 SW역량강화 후기

유승혁 2022. 3. 25. 01:22

올해 겨울방학 동안 삼전 동계 교육에 참여했었다. 알고리즘에 그렇게 두각을 드러내는 편이 아니기에 정말 하루하루 죽는 줄 알았다..ㅜㅜ 그 와중에 개발 공부도 하느라고 얼굴이 소폭 늙은 것 같당.. 사실상 이 교육 자체를 삼성 B형 자격 취득을 목표로 하는 것이고 그렇게 되기 위해 정말 노력했다. 그간의 이야기를 쭉 기억하고 싶어서 적어본당.

1. 교육 입과 테스트
3문제가 나왔고 48시간이 주어졌다. 입과 시험 보기 전에 백준에 있는 A형 연습을 쭉 해보았는데, 정말 깜짝 놀랐다. 전혀 다른 느낌의 문제들이 출제된 것이다! 애초에 3문제를 2 일 동안 푸는 것도 너무 파격적이었고.. 저 2일 간 운동도 제대로 못한 거 같다. 운동 내내 문제 생각하느라..
입과 시험 3문제를 풀어보는데 내가 평소에 아는 알고리즘으로 하면 안 됐었다. 싹 다 시간 초과가 걸렸었다. 거의 첫날의 4~5시간은 첫 번째 문제에 삽질을 했다. 난 정말 의문이었던 것이 애초에 최적의 알고리즘. 즉, 예상 수행 시간이 O(n)이었다. 대게 O(n)이면 1초 이내면 통과한다. 왜냐면 입력 자체가 한 번에 뽱 하고 주는 게 아니라 한 번씩 차곡차곡 쌓아 만드는 것이었기에 O(n)이면 무조건 통과할 줄 알았고 내 알고리즘에 확신이 있었는데... 4~5시간 동안 거의 패닉이었다. 무슨 입과 시험이 이래.. 코테도 아니고..
하지만 문제를 꼼꼼하게 읽고 많은 제약사항들을 체크해보았더니, 내가 흔하게 알고 있던 알고리즘이 아니라 그 문제에 맞게끔 입력들을 응용하는 방식을 택해야 했다. 아마 요구 사항은 알고리즘을 마냥 이용하는 것이 아니라 정말 적재적소에 사용하는 것을 요구한 것 같다.
이런 마음 가짐을 가지고 문제를 차분히 해결하다 보니 모두 풀어내었다. 정말 한 문제 한 문제 풀 때마다의 희열은 정말 엄청났다.

2. 전반 교육
이렇게 3문제를 모두 풀었었다. 오후 1시에 시작한 것으로 기억하는데 둘째 날 저녁 즈음에 다 풀었었다. 아마 36시간 정도 걸린 것 같다.
이렇게 당당히 입과를 하게 되었는데, 내가 생각했던 알고리즘 교육과는 달랐다. 난 어떤 알고리즘을 배우고 이를 어떻게든 쥐어 짜내서 응용을 하게 만드는 그런 수많은 문제를 풀게 될 줄 알았지만, 실상 알고리즘을 배우긴 배우는데 대부분 문제들이 웰 노운 있었다.
심지어 배우는 것도 잘 아는 힙, 맵, 링크드 리스트 이런 것들이었다. 그런데 재밌는 것은 자료구조들은 라이브러리를 사용하지 않고, 링크드 리스트의 경우 메모리 풀을 이용한 정적 할당으로 구현한다는 것이었다. 이렇게 하는 이유는 라이브러리를 사용하는 것보다 훨씬 시간을 줄일 수 있고 나름 커스텀(?)을 할 수 있어서 라이브러리 사용할 때, 아 이렇게 데이터 접근하면 좋을 텐데 같은 것을 해낼 수 있었다. 대표적으로는 이진 힙을 예로 들 수 있겠다.
그렇게 몇 번의 문제를 푸는데 어느 날부턴가 예전 B형 문제들이 속속 등장하기 시작했다. 일주일에 2문제 정도 주어졌었다. 맨 처음에는 감도 안잡히고 너무나 새로운 생각들을 해내야만 했다. 그럼에도 불구하고 전혀 못풀어서.. 공개된 해설 강의들을 보았는데 와... 문제를 자세히 읽고 세세한 정보들을 이용하여 풀어나가는 모습이 정말.. 이 세상의 것이 아니었다.
전반 교육에 나온 b형 문제들은 문제를 푼 다기 보단 시도해보고 결국 막혀서 해설 마술 쇼들을 보아가며 사고 과정을 하는 법을 차차 익혀나갔었다. 그래도 어려웠다..ㅎㅎ 내가 알고리즘을 그렇게 잘하지 못해서 그럴 수도 있다.. 누구나 개인차는 있으니깐. 어떤 사람 진짜 잘 풀더라..

3. 코딩 배틀
정확한 명칭은 기억이 안 나는데 중간에 이 배틀을 했었다. b형 문제와는 다른 성격의 문제가 나왔다. 오히려 입과 시험 때의 어느 문제와 비슷한 느낌이 들었다. 이 문제로 입과 생들끼리 약간의 코딩 배틀이었당. 난 꽤 적당~하게 풀었던 것 같다. 1등 한 사람들은 기상천외한 방법으로 점수를 받아내던데, 난 그냥 잘했네~ 정도 수준이었던 거 같다. 사실 더 풀라고 했는데 운동도 해야 하고 3차 백신 맞으러 가야 했고 쉬는 날 느낌으로 개발 공부하러 갔었다.

4. 후반 교육
배틀 이후에 바로 후반 교육은 아니었고 전반 교육을 며칠 더 하다가 후반 교육으로 넘어갔었다. 이게 진짜 사람 환장했닼ㅋㅋㅋㅋㅋㅋㅋ. 매일 B형 한 문제가 출제되었었다. 4시간을 목표 시간으로 두어야 했지만 6-7시간이 되는 날이 허다했다. 입과 시험 컨셉 적용과 6-7시간이라는 막대한 시간 투자로 초반에는 꽤나 잘 풀었다. 첫 한 주는 뭐 죽이 되든 밥이 되든 어떻게든 해결했던 것 같다. (애초에 이 첫 주 3문제인가 2문제밖에 없었다)
그렇게 자신만만하던 나에게 시련이 찾아왔다. 그다음 주인 2주 차부터 월요일에 4일간 장염을 앓으면서 겨우겨우 문제를 시도했다. 그런데 장염이 아니었어도 못 풀었을 것 같다.. 이전에 풀었던 b형은 굳이 따지자면 애들 장난이었다. 문제 접근 자체가 기상천외했다. 입과 시험 때나 이전 b형 문제들의 느낌은 온대 간대 없고 새로운 생각들을 요구했었다.
근데 아마 2주 차는 다 풀었던 것 같다. 하지만, 사실 6-7시간 투자 뿐만 아니라 교육 환경 게시판이 꽤 활성화되어 있었고 코치님들이 친절하게 알려주시는 데다가 내 코드 분석까지 해주셔서 풀었다기 보단 숟가락만 얹었다. 이렇게 하면서 문제 유형도 파악하고 어떻게 접근하는지 조금이나마 알았던 것 같다.
그 덕에 어느 정도 감들이 잡히고 유형들도 파악해 나갔다. 그러다 보니 금방 풀어내는 문제도 있고 적당히 고민하면서 풀어내었다. 하지만 결국 총 문제 중에 2문제는 해결하지 못했었다.

5. b형 시험
사실 b형 시험 직전에 b형 자격인증이 안된다는 통보가 들어왔다. 사실 너무 당황했다. 왜냐면 초반에는 b형 자격 취득 기회를 주신다고 하셨는데, 마지막 세미나 같은 것에서 b형 자격은 안 주고 나 스스로 실력 만족을 위해 시험을 보는 거라고 했다. 내가 잘 못 들었던 걸까.. b형 시험을 보게 해 준다는 말을 착각했던 것일 수도 있다.
좀 현타가 왔었다. 뭘 위해 난 달려온 것일까.. 갑자기 말 바꾸니 너무하잖아.. 소마 코테랑도 겹치는데 소마 코테나 보러 갈까. 소마 서류 합격해서 코테 두 번 시험을 보는데 하필이면 두 시험 날짜가 3/5, 3/19 였다. 맞다. b형 시험 두 번의 기회를 주는데 딱 저 두 날이었다. 그렇게 소마 코테를 보러 탈주하는 사람도 게시판에 보였다.
하지만, 음 뭐랄까 방학 동안 내 모든 걸(사실 70% 정도) 쏟아부은 교육이고 b형 시험을 보기 위해 달려왔는데 그냥 이 두 시험의 기회를 날리기에는 아깝기도 하고 나 스스로가 도망가는 것 같아 그 모습이 자존심 상했다. 그래서 b형 시험을 치르기로 결심했다.
첫 번째 시험은 탈탈 털렸다. 무슨 자료구조를 쓸 지도 애매하고 애초에 수행 시간 자체가 감이 안 오게 해 버려서 내 풀이에 확신이 없었다. 2시간을 고민하고 구현하는 시간 내내 확신이 없어서 지웠다 썼다를 반복했다. 그렇게 어찌 저지 종료 20분 전에 코드를 다 짰는데, 아뿔싸 첫 번째 테케부터 안 돌아갔다. 무한 루프 빠지고 이상한 값 나오고 메모리 접근 에러 뜨기도 하고... 그렇게 20분을 오류 찾는 것에 다 쓰고, 결국 실패했다. 근데 나중에 게시판 보니깐 내 생각이 맞았었다. 푼 사람들의 말과 내 생각이 완벽히 같았다... 아 아쉬워라.. 괜히 게시판 봤다가 더 열받았었다..ㅋㅋㅋㅋ 차라리 내가 접근 자체를 못했다 생각하는 게 맘 편했으니..
그렇게 2 주간의 자신감 하락 기간이 지나고 두 번째 기회가 왔다. 확실히 두 번째 시험에는 긴장도 없었다. 그냥 침대에 누워있는 거 마냥 편안~했다. 사실 기대를 안 한 것이 제일 컸다. 그냥 노는 마음으로 봤다. 그렇게 침착히 문제를 풀러 가보았는데 어머나 생각보다 금방 아이디어가 떠올랐다. 연필 잡고 어떻게 풀지 대략 30분 정도 고민했었다. 근데 막상 풀다 보니 엄청난 구현 양이 필요했다 (대게 그러지만, 특히나). 여러 함수들을 뽑아내야 했고 여러 자료구조를 구현해야 하다 보니 정확하게 어떻게 구현할지 구상하지 않으면 틀리기 딱 좋은 문제였다. 30분의 고민이 사실 충분하지 않았던 것도 있었겠다.
애초에 구현할 양이 많아 중간중간에 내 생각이 뭐였더라.. 하고 계속 찾아보아야 할 정도였다. 게다가 char*를 다루는 문제였는데 부끄럽지만 내가 약한 부분이었다... string이 익숙한 나에게 크나큰 시련,,, 구현만 2시간 걸렸다. 수많은 디버깅이 스쳐 지나갔었다.
그렇게 테케를 돌려보는데 계속 이상한 부분에서 막히는 게 많았는데 첫째로 논리가 잘못되어서 수정하느라 애를 먹었고 둘째로는 자료구조 오타가 있었다. 하지만 뭐 자료구조 오타는 정말 금방 해결했었으니 논리가 가장 큰 문제였다. 30분 고민한 내가 너무 오만했던 것이지.. 하지만 늦게나마 눈치채서 다행
그렇게 30분 남기고 풀어냈고 0.5초가 걸렸었다. 내가 아는 최적화를 최대한 끌어 넣어서 0.43초가 나왔었다. 그렇게 시험을 끝냈고 며칠 뒤 메일 한 통이 왔다...

6. 결과는???!?

야호오~

지하철에서 이 메일 알림을 받았을 때 제목만 보고 바로 들어가 보았다. 근데 와이파이 잘 안되어서 클릭했는데 버퍼링이 5초 정도 걸렸다. 근데 정말 그 5초가 5시간처럼 느껴졌다. 심장 엄청 빨리 뛰고 땀나는 것도 느껴지고 다리도 부산하게 떨었었다... 그러다 저 pass보고 정말 두 눈 의심.. 말도 안 돼 의심스러워서 가까이 보다가 핸드폰 코에 박을 번 했다.. 아야!
아무튼 정말 나 자신이 자랑스러웠었다. 정말 노력하면 안 되는 것이 없다는 진리를 또 한 번 인생에서 느끼는 순간이었다. 취업에 연계되지 않는다 명시되어있지만, 그다지 중요하지 않았다. 아마 그 지하철의 저 메일을 여는 순간은 꽤나 인생에서 기억이 날 순간임을 확신한다. 정말.. 영광스러웠다.

마무리
처음으로 공부 글 말고 사람 사는 이야기 해보았는데, 재밌네..ㅎ 나름 이 시즌에 큰 이벤트인 것 같아서 기억하고 싶어 블로그에 올려본다.
주변에 이 교육을 추천하느냐라고 하면 난 꽤 추천하고 싶다. 왜냐면 이 교육 끝나고 백준 풀러 가보았는데, 나 스스로도 놀랐다. 문제 접근 방법을 빠르게 생각해 내고 더 놀라운 건 접근을 할 때 구현에 용이한 방향으로 생각해 낸다는 것이 첫째로 놀랐고, 그렇게 생각해 내면 그냥 구현하면 스윽하고 풀렸다. 구현 실력도 꽤 올랐던 것이다. 플레 문제도 눈치만 좀 차리면 그냥 풀렸다. 애초에 플레 5이긴 했지만 썩 놀랐다. 그 덕인가 금방 플4 찍었다. 그렇기에 주변에 꽤 추천해준다. 교육 동안은 정말 지옥의 연속이었지만 b형 문제를 풀었다는 뿌듯함만 남아있던 것이 아니었어서 너무 기분이 좋았다.
아무튼 선물은 뭘까 너무 궁금하다~~ 사실 수료증만 와도 너무 고마울 거 같지만, 선물도 주신다니 감격스럽다. 좋은 기회를 준 삼성에게 꽤나 고맙다!


추가로 두 달이라는 긴 시간 동안 정신적으로, 지식적으로 날 많이 도와주고 응원해주고 PASS소식을 듣자 자신의 일처럼 기뻐해 주고 칭찬해준 선배에게 깊이 감사드립니다!!!!~~~~~~~ 평생 잘할게요..!!