알고리즘 테스트 그 후 ..
- 알고리즘 테스트는 잘 봤던 터라 채점 이후 들떠있었는데 매니저님에게 연락이 왔다.
일단 문제가 뭐였냐하면
-
입력받은 숫자가 만약 12345 라면 5+4+3+2+1 = 15 이런식으로 뒤집어서 더한 값을 출력하는 것이였다.
-
근데 여기서 내가 착각한 문제가 있었다.
-
저번에 광현과 input값에 대한 문제에 대해 말한적이 있는데 console창에 숫자를 입력할 때 ‘12345’같이 입력해줘야 input값을 받을 수 있다고 얘기를 했던 것 같아 이번에 문제를 풀 때에도 funtion(’12345’)를 입력받게 문제를 푼 것이다.( 그전까지 잘 풀었으면서! )
-
다시 물어보니 심지어 우리의 문제는 그게 아니였다.. ! ㅋㅋㅋㅋ
-
제출 할 때는 이렇게 제출했었다.
function solution(n){
let result = n.split("").reverse().map(Number)
}
다시 푼 해결법 ! toString()
TIL
🖇 얕은 복사와 깊은 복사
- 얕은 복사
- 사본을 만들어내지 않고 원본을 참조하도록 복사한 척을 하는 것
- 배열은 복사될 때 주소값이 복사된다.
- 예를 들어 b라는 변수 값에 a를 넣고 b에 배열을 push한다.
a
의 값을 예상해보자
- (
주소에 대한 부분은 추후 정리하길 바람)
const a = [1,2,3,4,5]
const b = a
b.push(6)
console.log(a)
- b에 push했는데 a에도 값이 추가된 것을 볼 수 있다.
- 결국 a와 b의 메모리 주소는 같다.
- 깊은 복사
- 배열의 복사 (깊은 복사같은 얕은 복사)
- Array.prototype.slice() 를 사용하면 새로운 배열을 반환해준다. (참조형 요소가 있다면 얕은 복사)
const a = [1,2,3,4,5]
const c = a.slice(0)
- 그럼 둘은 True일까 ? -> 아니다. False이다.
- 왜냐면 c는 a의 주소값이 아닌 새로운 주소값을 가지기 때문이다.
일주일의 회고
- 알고리즘
- 알고리즘 진짜 열심히 풀었다. 사실 파이썬으로만 (그것도 완전 기초)로만 풀어서 "그래도 이 정도면 괜찮겠지" 생각했던 내 자신 반성하고 또 반성해
- 그래도 알고리즘 일주일 전과 일주일 후의 내가 꽤 ! 생각보다 ! 이 정도로 성장했다니 라는 생각이 들 정도면 꽤? 좋은 성과이지 않았나 싶다.
- 이번주의 목표는 뭐였어
- 사실 이번주의 목표는 일주일 전과의 차이를 내가 느끼는 거였고 두번째는 output과정을 꼭 거치자는 거였다.세번째는 알고리즘을 어떻게 풀어야 잘 풀었다고 생각하는거지 ? 라는것?
- 처음에는 생각보다 output과정을 만드는 것 자체가 쉽지는 않았던 것 같다. 모르는 문제를 어떻게 푸는가 바로 답지 먼저 봤던 것 같다.
- 다른 팀원들이 어떻게 문제를 푸는지 화면 너머로 봤다. 팀원들 중에 잘 하는 사람들이 많아서 그런 사람들의 공통점을 잘 살펴봤다. 팀원들은 모르는 문제가 있거나 어떻게 풀어야하는지 막혔을 때 그에 관련된 함수를 검색하는 식으로 먼저 답지를 접근하는 것이 아니라 그에 해결할 수 있는 방법을 검색해보는 것이였다.
- 이런 과정들을 나에게도 적용시켜보고 답지는 멀리하려고 했던 것 같다. 정 모르겠는 문제는 제한시간내에 풀지 못했던 문제들만 답지를 보고 풀려고 했다.
- 외워야 할 것들(함수 이름) 같은 것들은 외우되 MDN문서를 보고 적용시키는 방법을 보려 했다. 처음에는 눈에 익지 않았는데 나중에는 문자열에 쓰이는건지 아닌지, 배열에 대한건지 아닌지에 대한 것들까지도 적용해 보았다.
Ref.
Bbaktaeho