20240215 기술매니저님 멘토링
알고리즘 3일차 코드리뷰
19~27번
19번. 제일 작은 수 제거하기
shift() 사용하는 경우도 봤다고 하셨다.
20번. 가운데 글자 가져오기
홀수 / 짝수 => subString 사용하는 것도 생각해볼 수 있다.
21번. 수박수박수박수박수
-for문을 바깥으로 빼고 if문으로 하면 조금 더 깔끔할 것 같다 -> 21-1번
21-2번
repeat()를 하고 수를 붙여도 되고,
repeat()를 하고 마지막 글자를 빼는 방법도 있다.
아마도 마지막 글자를 빼는 방식이 조금 더 간결한 코드가 나올 것이라고 예상.
22번. 내적
문제에 풀이가 나와있기 때문에 그대로 하면 어려움이 없을 것이다.
23번. 약수의 개수와 덧셈
제곱수의 약수의 갯수 = 홀수. => 이것이 이 문제의 의도.
--> 이게 만약에 이해가 안되면 소인수분해 해보기.
ex) 12 = 2 2 3, (2+1) * (1+1) => 6개(1,2,3,4,6,12)
약수의 개수 = 제곱수 (?)
소인수분해 하는 코드도 존재하고, 익혀두면 나중에 종종 쓸 일이 생긴다.
24번. 문자열 내림차순으로 배치하기
(대문자<소문자) 이 조건은 사실 함정.
유니코드 존재.
유니코드 : 문자를 숫자처럼 다루는 코드
유니코드에선 알파벳이 대문자의 숫자가 낮고, 소문자가 숫자가 높다.
sort()만 해도 자동으로 대문자가 소문자보다 뒤에 가있는 것을 확인할 수 있다.
sort((a,b) => a-b) => 숫자일 때 가능.
sort()를 이용하려면 문자를 유니코드로 바꿔주는 함수를 이용하면 된다. 이런 함수도 있구나?!ㅋㅋㅋ
25번. 부족한 금액 계산하기
25 => 등차수열 사용
25-1 => for문 사용
26번.
26-1 -> 정규식 사용
26-2 -> 0~9 사이 조건으로 if문
isNaN은 -> Number() 사용.
왜그런지 봤더니 '0'이 숫자로 되서 false 처리 되서 안되는 것 같음
조건문에 Number(s) !== 0 라고 예외 추가하면 되는 듯
27번. 행렬의 덧셈
2중 for문 돌면서 하면 된다.
Q. 스터디 어떻게 할지? 추천도서로 할지 / 다른 방식으로 할지
A. 추천 도서로. (모던 자바스크립트 deep dive)
<모던 자바스크립트 deep dive>
1~15장
17장 반반
18, 19, 21, 22, 23(꼭 여러번), 24, 25
26, 27(메서드 알면 코드가 굉장히 짧아짐)
28, 29, 30, 31(반반), 32, 33(메타데이터 용, 반반)
34(반반)
35, 36, 37
38(프론트라면)
39(프론트)
40, 41, 42
43(Json)
44(읽어보시고)
45 무조건
46(그닥?)
47, 48(매우 중요)
49(프론트)
=>>
1~15장 필수로 꼭 읽어보기
23장 꼭 여러번 보기
27번
31번 반반 => 중요한거 반, 아닌거 반
38,39,49는 굳이 안 읽어도 된다
45는 무조건!!!
47,48 매우 중요!
+송규진 담임 매니저님
-해쉬맵의 이해도에 따라서 코드의 질이 달라질 수 있다.
-주특기에 익숙해지는 것이 중요하다. (알고리즘보다!)
-취업타켓팅 하는 사람들이 알고리즘을 놓지 않는듯.
-코드타카 라는 알고리즘을 푸는 시간을 만들 예정.
-하나의 팁 : 어플 개발할때, 스플래쉬 화면 작동하고 로그인이 작동이 되냐 -> 하지만 이건 프론트 부분. 크게 신경 안써도 될듯.
-클래스 운영은 중요. 각 언어마다 클래스 특성이 있고 사용법이 다르다.
코틀린과 자바는 비슷.
-매니저님은 선 구현 -> 후 이해 를 추천.
-성현님은 node.js 선 공부 추천(js보다). 어차피 js를 단기간에 완벽히 알 수 없기 때문에. 구현(직접 실행하면서)하면서 깨닫는 부분이 있기 때문에 공부를 완벽히 다 하려고 하기보다는 먼저 구현하려는 것에 집중하는 것을 추천.
-매니저님은 디자인 패턴을 잘 쓸수록 현업에서 좋다. 아키텍쳐는 아직 x -> 이건 회사 입사 후에. 디자인 패턴 숙지하는 것이 아주 좋다고 생각.
+데이터베이스 구성을 이해한다고 해야하나. 예를 들어 DB에서 불변해야 하는것? -> ex:PK
데이터 / 패키지 / 프레젠테이션(프론트)