4주차가 이미 지나고 다음 코스를 위한 마지막 평가를 남겨둔 현 시점에서, 과정 회고를 남기는 것이 여태껏 해왔던 것처럼 몇 단락의 글을 더 쓰는 것 뿐인데 왜 이렇게 망설여지는지 모르겠네요. 아마도 2주차가 지났을 때는 느끼지 못했지만 프리 코스를 마칠 때 쯤이면 조금이라도 더 성장한 자신의 모습을 기대했었는데 현실은 그렇지 않은 것처럼 느껴지기 때문인 것 같습니다.
그나마 위안이 되는 것은 많은 과제들과 씨름하고 페어프로그래밍을 통해 자신의 수준이 어느 정도인지 좀 더 객관적으로 알 수 있게 되었고, 그런 자극을 통해 한 뼘이라도 더 성장한 것은 분명하다는 사실입니다. 이에 덧붙여 과제 해결하느라 많은 말을 나눌 수 없었지만 같이 페어가 되었던 동기 분들에게 이 글을 빌어 감사를 드립니다.
프리 코스를 시작하기 전과 지금을 비교하여 달라진 점을 느낀 순간은 바로 평가 준비를 하면서 예전에 풀었던 코드 문제들을 다시 접했을 때였습니다. 딱 맞아 떨어진다고 할 수는 없지만 몇 가지 예시를 들어 설명해 보도록 하겠습니다.
첫번째는 나무보다 숲을 먼저 볼 수 있게 되었다는 점입니다.
해당 문제를 간단히 요약하면 정수들을 요소로 갖는 배열과 임의의 정수가 주어졌을 때, 임의의 정수를 기존의 배열에 포함시키고 정렬할 경우 임의의 정수가 위치하는 인덱스 값을 구하는 문제입니다.
1. 임의의 정수를 배열에 포함시키기.
- push()
2. 배열 정렬하기.(조건상 for, while loop 사용 금지)
(1) 정렬된 배열을 위한 빈 배열 준비
(2) forEach() 이용 반복
- 최소값 구하기: Math.min()
- 최소값 빈 배열에 추가: push()
- 최소값을 제외한 배열로 기존 배열 갱신: filter()
3. 정렬된 배열에서 임의의 정수 인덱스 찾기.(조건상 sort, indexOf 사용 금지)
(1) forEach() 이용 반복
- 요소의 값이 임의의 정수와 같은지 비교
4. 찾은 인덱스 값 반환하기.
0. 임의의 정수를 포함한 배열이 정렬되었다고 상상하고 상황 설명하기.
- [ 0, 1, n, 3, 4] : n보다 작은 정수가 '2'개 있을 경우 3번째(인덱스 '2')에 위치
1. 배열 내에서 주어진 임의의 정수보다 작은 수들의 갯수 구하기.
(1) 갯수를 나타내는 변수 count 선언
(2) count 계산: forEach() 또는 reduce()
2. 계산된 count를 인덱스 값으로 반환하기.
두번째는 문제 해결에 대한 접근 방법을 단계별로 나누어 생각할 수 있게 되었다는 점입니다.
해당 문제를 간단히 요약하면 임의의 요소들을 갖는 2차원 구조의 배열에서 모든 숫자들의 합을 구하는 문제입니다.
1. 누적합을 나타내는 변수 sum 선언하기.
2. nested array내의 요소들에 접근하기.
(1) 이중 for loop 이용 반복
- 각 요소 데이터 타입 확인: typeof
- 조건에 따른 실행: if
- 데이터 타입이 숫자이면 누적하여 합
3. 누적합 결과값 반환하기.
1. 2차원 배열 풀기: flat()
2. 데이터 타입이 숫자인 요소만 골라내기: filter()
3. 누적합 구하여 반환하기: reduce()
마지막 세번째는 혼자 중얼거리며 설명하면서 코딩하는 습관이 생겼다는 점입니다.
종종 무의식 중에 중얼거리다가 그런 자신을 인지하고 피식거리곤 하는데 별 것 아닌 것 같아도 은근히 집중력도 생기고 몰입감도 높아지는 것 같습니다.
최근 본 어느 영화에서 언어를 배운다는 것은 그 언어를 사용하는 이들처럼 사고하고 행동하게 되는 중요한 요인이라고 했던 것이 기억납니다. 결국 영화 말미에서 지구에 왔던 외계인들도 한 언어학자에게 자신들의 언어를 가르쳐주고 떠나게 되는데요.
언젠가 다시 지금을 돌아보면서 Computational Thinking을 위한 첫 단계로 썩 괜찮은 시작이였음 느낄 수 있는 날이 오길 바랍니다.