[Reflection] 코드스테이츠 블록체인 개발자교육 5주차 후기

hskim_·2022년 4월 3일
0
post-thumbnail

5주차 수업을 마치며

그동안의 Section1 수업의 결실을 확인하고자하는 HA 진행과 함께 5주차가 시작되었다. 긴장으로 가득찬 시험이 예상되었으나 다소 차분한 마음으로 시작할 수 있었던 것은 시험의 결과에 부담을 덜고자하는 다짐 덕이었던 것 같다. 시험을 시작하기 전, 곰곰히 생각해보았을 때 결과에 연연하며 앞으로 남은 나의 컨디션에 영향을 주는 것이 8월의 나에게 어떠한 결과를 안겨줄지는 불보듯 뻔했기 때문이다. 그래서 다짐한 것은 결과에 눈치보지말고 나 스스로가 8월까지 코드스테이츠의 수업에서 얻어갈 것이 무엇일지를 생각해보고 그 결론에 전념하자였다. 그리고 그 결론은 개발자 공부의 과정을 학습한다는 느낌과 전반적인 블록체인 개발자의 요구 역량이 무엇인지를 확실하게 알고 수료하자이다. 사실 코드스테이츠의 수업에서 가장 큰 장점이라고 생각이 드는 부분은 자기 주도적 학습과 페어프로그래밍 두 가지이고, 내가 생각하는 개발자의 역량에 이 두 가지 학습법이 주는 영향력이 클 것이라고 믿고 있다. 그래서 난 HA의 결과보다는 결과를 내기 위한 나의 노력과 과정에 더 초점을 두고자 한다. 덕분에 5주차 수업은 마음을 편안하게 보낼 수 있었고 그동안의 수업보다 더 자연스러운 집중을 할 수 있던 것 같다.

책 읽는 습관(2)

3주차 후기에서 언급한 책 읽는 습관에서 소개한 책<뇌가 좋아하는 공부 사전>의 내용 중, 기억에 남는 내용 몇 가지를 공유해보고 싶어졌다. 책에서는 우리의 뇌가 나도 모르게 공부에 적합한 상태에 이르도록 도와줄 수 있는 방법을 굉장히 많이 소개하고있다. 다만 그 중에도 아차! 싶었던 내용이나 이건 꼭 실천해야겠다하는 내용을 위주로 3가지를 추려보았다.

1. 소리내어 읽는 습관

많은 사람들의 공부 진행 과정 중에 나오는 습관 중에 하나일 것이라고 생각된다. 필자도 혼자있는 집에서 간혹 아무리 읽어도 이해가지 않는 문장같은 경우는 습관처럼 소리내면서 읽을 때가 있었다. 그런에 이 책에서 실제 효과가 있는 행동이라는 것을 보고 자그마한 충격을 먹었다. 물론 매번 소리내어 읽는 것은 되려 학습 속도에 지장을 주기에 적절히 섞어 행동할 것을 추천한다. 그리고 소리내어 읽는 것과 속으로 읽는 것의 차이가 존재했는데 소리내어 읽을 경우 단어같은 단기적인 암기에 효과가 있는 반면 속으로 읽는 경우 장기 기억에 더 효과가 있다는 점이다.

2. 공부의 시작은 의욕을 만들어 내는 것부터

영화나 드라마를 보면 종종 사법고시를 준비하는 수험생이 방 곳곳에 하면된다, 지금 자면 꿈을 꾸지만 꿈을 이룰 수는 없다 등등의 문장을 붙여놓고는 공부에 전념하는 것들을 볼수 있다. 사실 이것들이 단순한 나에 대한 자극의 용도로만 알고있었지 근거있는 효과일까?에 대해서는 고민해본적이 없다. 그런데 이 책에서는 이러한 의욕을 불러일으킬 수 있는 문장이 눈앞에 있는 경우, 즉 공부라는 것을 해야하지만 의욕이 없는 상태라고 변명을 늘어놓으며 침대에서 일어나지 않는 나의 경우에 대해 일단은 행동해라, 뇌는 일단 하기 싫은 행동에 대해 실제 행동을 취하기 전과 후는 변화하며, 하기 싫은 공부일지언정 일단 시작하면 뇌는 그것에 적응한다! 라고 말해주고 있었다. 그렇기에 나의 눈앞에 나를 자극하는 문장들이 펼쳐져 있는 것을보며 일단 몸을 움직이게할 것과 하기 싫어도 일단 일어나 책상에 앉은 후 책을 피는 행동만으로도 뇌가 느끼고있는 의욕의 부재를 깨울 수 있다는 것이다.

3. 공부를 시작하기 전, 산책을 습관화해라

우리가 아는 애플의 창시자 스티븐 잡스나 페이스북의 창시자 마크 저커버그의 공통된 특징은 하루 10분 이상의 산책이라고 한다. 이는 뇌에 피가 도는 양과 관련이 있다고 하는데 뇌에 피가 원활하게 공급될 경우 뇌가 활성화되고 이는 곧 머리가 잘 돌아간다라고 설명될 수 있을 것이다. 꼭 걷기뿐만 아니라 수영과 같은 유산소 운동도 도움이 되니 참고하면 좋을 것 같고, 다만 너무 무리한 운동은 당연하게도 역효과를 불러일으키니 이점은 유의하여야할 것이다.

sort()함수

배열의 메소드는 알아둘수록 알고리즘 문제를 접하게 될 때에 유용한 점이 많은 것 같다. 오늘은 알고리즘 3일차 문제의 레퍼런스 코드의 핵심으로 확인되는 sort함수를 기억 깊숙히 심어보고자 정리해보려고 한다. sort함수를 알기 전의 나는 let arr = [1,4,5,2,3] 이라는 배열이 존재했을 때, 어떤식으로 오름차순 정렬을 했을까? 다양한 방법이 존재하겠지만 나라면 배열의 요소인 숫자 중 가장 Math.min함수를 이용하여 가장 작은 값부터 추출하여 새로운 배열에 넣는 방식을 생각했을 것 같다. 하지만 이러한 풀이법은 코드를 복잡하게하여 코드를 접하는 당사자에게 도움이 되지 않는 방법일 것이다. 만약 sort함수를 사용한다면 간단하게도 arr.sort()를 작성하였을 때, console.log(arr) 로 arr 배열의 요소가 [1,2,3,4,5]순서로 바뀐 것을 확인할 수 있다. 다만, 배열의 내용이 [1,2,3,10,5]라면 똑같은 방법을 이용했을 때, console창에서 [1,10,2,3,5]가 확인 된다. 이는 함수의 조건으로 아무런 내용이 들어가지 않았을 경우 유니코드 순서로 정렬을 하기 때문이다. 이를 개선하고자 아래와 같은 방식으로 작성해볼 수 있다.

let arr = [1,2,10,3,5]
arr.sort(function(a,b) {
	return a-b 
})
console.log(arr) ----> [1,2,3,5,10]

위처럼 sort함수의 인자로 a,b를 넣어주고 실행하면 순차적으로 아래와 같은 비교를 진행한다.

return 1-2 --> 음수, 앞의 인덱스가 더 작다   [1,2,10,3,5]
return 2-10 --> 음수, 앞의 인덱스가 더 작다  [1,2,10,3,5]
return 10-3 --> 양수, 앞의 인덱스가 더 크다  [1,2,3,10,5]
return 10-5 --> 양수, 앞의 인덱스가 더 크다  [1,2,3,5,10]

결과적으로 return문 안의 조건의 결과 값이 양수가 나오면 a인자로 선택되었던 요소의 인덱스를 하나씩 이동시키며 배열을 오름차순 조건에 맞게 정렬해주는 것이다. 베이스는 유니코드이기 때문에 문자열에서도 비슷한 방식으로 정렬이 가능하다. 아래의 예를 살펴본다.

let arr = ['abcd', 'adc', ahh']
arr.sort(function(a,b) {
	if(a > b) return 1;
    if(a < b) return -1;
    if(a===b) return 0;
})
console.log(arr) ---> ['abcd', 'adc', 'ahh']

보시다시피 문자열의 0번 인덱스는 모두 같은 'a'이므로 서로 다른 1번 인덱스를 비교하여 유니코드 상에서 앞에 위치한 순서인 b,d,h 순서로 정렬이 되었음을 확인할 수 있다. 추가적으로 유니코드에서는 대/소문자의 순서를 구분하므로 만약 이를 이용해야한다면, 대문자가 소문자보다 앞서있음을 기억하고 toUpperCase 함수를 이용하여 대문자로 변경 후 진행할 것을 참고한다.

그렇다면 sort함수를 활용할 수 있는 것들은 또 무엇이 있을까? 라는 생각에 잠기게 된다. 우리는 이를 객체의 값에 따라 정렬하는 것에 이용할 수 있다. 아래 코드로 예를 들어본다.

const arr = [
 {name : 'hskim', age : 15},
 {name : 'jskim', age : 45},
 {name : 'shhan', age : 23},
 {name : 'yhjo', age : 43}
]
arr.sort(function(a,b) {
	return a.age - b.age
})
console.log(arr)
[결과]
[
 {name : 'hskim', age : 15},
 {name : 'shhan', age : 23},
 {name : 'yhjo', age : 43},
 {name : 'jskim', age : 45}
]
profile
열심히, 꾸준히, 그리고 정확히

0개의 댓글