프로그래머스 코테 풀기
3진법 다루기
3진법 다루기를 풀면서 parseInt를 이용하여 다른진법에서 10진법으로 바꾸는 법은 아닌데 10진법에서 다른진법으로 바꾸는 법을 몰라 찾아보았다 보니 toString으로 10진수를 특정 진수로 변환할수 있었다 이제까지 나는 toString에 대해서는 알고 있었지만 진수변환은 몰랐고 특정객체를 문자열로 변환하는 기능만 알고있었다 정말 메서드의 세계는 끝이없다
반복문 속도차이
프로그래머스 문제를 풀다보니 처음에 풀때는 정답 맞추기에만 집중했지만 좀더 높은 문제를 풀다보니 속도개선문제가 시급하다는 것을 느끼게 되었다 풀었던 문제중 하나가 효율성 테스트도 같이 하였는데 그 이후로 문제를 풀다 보면 계속 테스트 시간을 확인해보게 되었다. 현재 나는 엄청 어려운 문제까지는 못풀고 낮은 단계부터 차근차근 풀어가고 있는데 낮은 단계에서는 반복문을 쓰는 비중이 높아 반복문에서 자주 쓰이는 for, forEach, reduce, map에 속도를 확인해보았다
단순 누산 작업으로 속도를 비교하면 for loop, reduce, forEach, map의 순으로 빨랐다
물론 각 함수마다 고유의 기능을 가지고 있기때문에 딱 말해서 for loop, reduce, forEach, map 이순으로 빠르다고 말하기는 어렵다(하지만 검색도 해보니 대체적으로 저 순으로 나왔다) 이제까지는 편하게 문제를 풀 수 있어 map이나 reduce를 애용했는데 반복문에서 for문이 유리한것을 알게되어 속도에서 문제가 생기면 for문을 많이 이요해야 겠다
리액트를 다루는 기술
컴포넌트 반복
리액트에서는 보통 내장 함수인 map함수를 사용하여 반복되는 컴포넌트를 렌더링 할 수 있다
이때 key에러가 생긴다면 내가 key값을 정해주지 않았기 때문이다 리액트에서 key는 컴포넌트 배열을 렌더링했을 때 어던 원소에 변동이 있었는지 알아내려고 사용한다. key가 있다면 이 값을 사용하여 어떤 변화가 일어났는지 더욱 빠르게 알아 낼수가 있다
배열을 수정,삭제, 삽입할때도 push를 하는 것이 아니라 concat, filter같은 새로운 배열을 만들어주는 함수를 이용하여 불변성을 유지해주어야 한다
라이프사이클
라이프사이클은 마운트되고 업데이트되고 언마운트의 순을 가졌다
먼저 마운트, 즉 돔이 생성되고 웹 브라우저상에 나타난다 그리고 props, state가 바뀌거나 부모 컴포넌트가 리렌더링 되는 등에 의해 업데이트가 되고 컴포넌트를 돔에서 제거한다(언마운트)
후기
반복문 속도비교하고 난후 코테 풀다가 for문에 길이 제한걸때 으잉? 이것도 속도좀 잡아먹겠는데 하고 .length에서 숫자를 넣어주니 놀라울 정도로 속도가 줄어들었다(이렇게 차이가 날줄 몰랐다) 다음부터는 문제를 풀고나서 속도가 느리다면 빠르게 개선할점이 있는지 확인해 봐야겠다
'TIL & 일지' 카테고리의 다른 글
TIL, 06.21 (0) | 2023.06.21 |
---|---|
TIL, 06.20 (0) | 2023.06.20 |
TIL, 06.18 (0) | 2023.06.19 |
TIL, 06.17 (0) | 2023.06.17 |
TIL, 06.16 (0) | 2023.06.17 |
댓글