본문 바로가기

후기/강의 후기

[2주 차 회고] 코드스쿼드 2022 프리코스 (feat. 코드스쿼드)

728x90

- 총 4주 과정 (22.10.30 ~ 22.11.25)

- 100% 온라인 진행

- 수강료 20만 원

2주 차 학습일지 (22.11.06 ~ 11.12)


-  배열과 객체 / 미션 #1 (문자 배열 변환, 도서관 책 목록, 미로 찾기 문제)

-  2주 차 알고리즘 문제

-  객체지향 프로그래밍2 / 미션 #2 (자동차 공장 문제, 성적 리포트 문제, 주사위 게임 문제)

-  추가 미션 #2-2 문제

 

 

2주 차가 시작됐다. 1주 차에 객체지향 관련 미션이 올라왔었는데 나름 만족스럽게 해결을 해서 2주 차 시작도 자신 있었다. 하지만 월요일 새벽, 급작스러운 비보를 들었다. 친할머니의 부고를 전해 들어서 다음날 장례식에 참석해야 했다. 월요일엔 수업 참석이 가능했지만, 화요일과 수요일은 공부를 할 수 없었다. 때문에 2주 차엔 온전히 공부에 집중할 수 없는 상황이었다.

 

 

첫 번째 미션은 깃 저장소를 만드는 것부터였다. 깃 허브를 만들어 놓았지만 실제 사용하는 방법에 대해선 잘 몰랐고, 특히 git CLI 명령어는 아~~ 주 기초적인 것만 시도한 수준이었다. 따라서 깃에 대한 기본 강의를 유심히 살펴봤다. 본격적인 문제는 '문자 배열 변환', '도서관 책 목록', '미로 찾기'였다. 이미 깃 관련 파트에서 시간을 많이 소요해 미로 찾기 문제까진 풀지 못했다. 문자 배열 변환은 어렵지 않았는데, 도서관 책 목록을 만드는 문제는 고민이 많았다. '깊은 복사', '얕은 복사' 개념이 포함되었는데, 두 개념의 차이에 대해 잘 몰라서 일단 느낌대로 풀었다. 해당 개념에 대해 다시 공부를 하기로 마음먹었다. 미로 찾기 문제는 시도를 하지 못했지만, 다른 학생들의 반응을 보아하니 난이도가 높아 보였다.  BFS, DFS 알고리즘을 사용하라는데 이것에 대해서도 잘 몰라 지레 겁을 먹었다. 추후 이 문제도 진지하게 접근해봐야겠다.

 

두 번째 미션은 설계에 중점이 맞춰진 문제였다. 장례식에서 돌아오니 '짝 프로그래밍'을 했던 팀원의 긍정적 소감에 내 짝과 동시에 코딩을 해보는 것을 시도했다. 인텔리제이를 통해 함께 코드를 작성할 수 있다는 사실도 처음 알았고, 너무 신기했다. 첫 '자동차 공장 문제'는 static과 싱글톤 패턴을 활용한 미션으로 어렵지 않았다. 하지만 두 번째 문제부터 난이도가 확 올라갔다. 일단 txt 파일에서 정보를 입력받아 파싱하는 부분부터 출력까지 하는 등 IO 클래스를 이용해야 하는 부분에서 어려움을 느꼈다. 그동안 굉장히 소홀히 생각하던 IO 파트를 적용해야 하니 난감했던 것이다. 둘째로 설계에서 막막함을 느꼈다. 클래스를 만드는데 학생들의 점수를 어디에 저장해야 할지 고민이 많았다. 초반에는 Subject 클래스를 만들어 해당 과목의 점수를 저장했는데, 멘토와의 대화에서 Score 클래스를 따로 만들라는 조언을 듣곤 더 머리가 아팠다. Score 클래스를 만들어서 어떻게 점수를 관리하라는 거지? 감이 좀처럼 잡히지 않았다. 과거 POCU 아카데미에서 설계 연습을 할 때 느꼈던 막막함이 또 내 앞을 막았다. 동시에 이런 고민의 과정을 통해 실력이 늘 것이라며 기대도 됐다. 결국 주말이 다가올 때까지 해당 미션을 완성하지 못했다.

대신 미션 3인 주사위 게임 문제는 어느 정도 해결했다. 객체지향적으로 또 캡슐화를 잘 지켰는지 모르지만 일단 구현은 했다. 

 

처음 짝 프로그래밍을 했는데 장단점이 확실한 것 같다. 원격으로 진행하다 보니 의사소통도 원활하지 않고, 서로 생각하는 게 다르다 보니 시도해보는 것도 속도가 느렸다. 그래서 한 문제를 푸는데도 오래 걸렸던 것 같다. 반대로 상대방이 내가 모르는 부분에 대해 잘 안다면 즉각적으로 피드백을 받을 수 있기 때문에 공부가 됐다. 프로그래밍 설계 기법 중 하나인 XP의 특징에 '짝 프로그래밍'이 있는데, 매일 짝 프로그래밍을 한다면 어떨까 상상해봤다. 지금 둘 다 모르는 학생이라서 그렇지 고수끼리면 어떤 시너지가 나올지 궁금했다. 

멘토와의 대화


-  알고리즘 이론을 모르고 알고리즘 문제를 푸는 건 한계가 있다. 일단 '자료구조' 지식이 선행되어야 하고, 이후 알고리즘 이론을 공부하면 좋다.

 

-  알고리즘 문제를 풀지 못하겠다면 먼저 정답을 보는 것도 방법이다. 대신 정답을 통해 원리를 이해하는 것이 중요하다.

 

-  주소가 복사되어 같은 객체를 가리키는 것이 '얕은 복사'이다. 즉 수정하면 영향을 준다.

 

-  완전히 서로 다른 객체를 가리키게 하는 것이 '깊은 복사'이다. 즉 값만 복사한다.

새롭게 고민한 것


-  BFS, DFS 개념

 

-  깊은 복사, 얕은 복사

느낀 점


첫 번째 미션도 다 풀지 못했고, 수요일 알고리즘 문제와 추가 2-2 문제는 손도 못 댔다. 무엇보다 성적 관리 프로그램 문제에서 정체되어 있다. 이 부분이 가장 마음에 걸린다. 계속 신경이 쓰이기 때문에 막힌 체증을 확 풀고 싶다. 갈수록 정말 내가 부족하다는 것을 느낀다. 동시에 자바 언어에 대해서 하나도 모른 상태로 시작했다면 얼마나 크게 절망했을까 싶다. 생각보다 난이도가 있는 수준이다.