본문 바로가기

javascript13

[ 타입스크립트(TypeScript) ] Incorrect (variable) is specified more than once, so this usage will be overwritten 에러 해결하기 📍 Incorrect (variable) is specified more than once, so this usage will be overwritten 에러 해결하기 typescript로 작업하다 다음과 같은 오류를 마주했다. 오류가 발생한 원인은 getListHref를 props로 내려준 위치가 잘못되었기 때문인데, 바로 {...props} 앞에 선언했기 때문이다. 하단의 AS-IS코드를 살펴보면 {...props} 앞에 getListHref를 선언했는데, 이것은 의미가 없다. 왜냐하면 ...props로 내려오는 getListHref을 최종적으로 적용하기 때문에 처음에 선언한 getListHref를 항상 override하기 때문이다.이럴 때는 TO-BE 코드처럼 내가 적용하고 싶은 getListHre.. 2022. 12. 28.
[ 자바스크립트(JavaScript) ] filter + join 메서드로 가독성있는 코드 작성하기 📍 filter + join 메서드로 가독성 있는 코드 작성하기 string | null 타입을 가지는 a, b를 사용하여 a·b로 나타내야한다. 만약, 둘 중에 하나라도 null일 경우 ·를 표시하지 않고, string 타입만 나타내야한다. 예를 들어 a = 'foo'이고, b = 'bar'일 때 둘 다 값이 존재하면 foo·bar로, a타입만 존재하면 foo, b타입만 존재하면 bar, a와 b 둘 다 존재하지 않는 경우 null 혹은 ''을 나타내야한다. 이럴 때 어떻게 가독성 있게 코드를 작성할 것인가? 리액트에서 사용할 때 AS-IS는 조건식과 join 메서드를 사용하여 a && b ? [a, b].join('·') : a || b로 나타냈는데, 가독성이 너무 떨어졌다. 그래서 TO-BE 처럼 .. 2022. 11. 15.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - H-Index 📍 프로그래머스 2단계 - H-Index 문제 보기 정렬을 사용하여 푸는 문제인데, H-Index라는 정의를 처음에 잘 이해하지 못했다. 여기저기 찾아보다 H-지수가 무엇인지 알려주는 기사를 봤고, 해당 기사를 통해 구현해보니까 정답 판정을 맞았다. (기사 보러 가기) 기사에 작성된 핵심 내용을 토대로 만약, citations = [8, 4, 5, 10, 3]이라고 가정한 후 로직을 작성하면 다음과 같다. 전체 논문 중 많이 인용된 순으로 정렬(내림차순 정렬) 인용 수(citation[i])와 논문 개수(idx)를 하나씩 비교해나가면서 인용수가 논문수와 같아지거나, 인용수가 논문수보다 작아지기 시작하는 숫자(논문 개수)가 h가 된다. 결론적으로, 인용 횟수 3번이 넘는 논문의 수가 적어도 4편이 된다는.. 2022. 3. 31.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 위장 📍 프로그래머스 2단계 - 위장 문제 보기 이 문제에서의 핵심은 서로 다른 옷의 조합수를 return 하는 것인데, 처음에 부분집합을 사용하여 모든 옷을 입지 않는 경우의 수를 제외하고 로직을 구현하려 했으나 동일 key값에 있는 value는 동시에 입을 수 없기 때문에 부분집합을 사용하지 못했다. 결론적으로 하나의 공식을 이용해서 풀어야 하는데 공식은 다음과 같다. key값마다 의상을 입을 수 있는 경우의 수에서 1을 더해준다. 1을 더해주는 이유는 해당 의상을 입지 않을 수도 있기 때문이다. 모든 key값에 동일하게 공식을 적용하고 마지막에 1을 빼주는데, 그 이유는 스파이는 하루에 최소 한 개의 의상은 입습니다.라는 조건을 통해 모든 옷을 벗지 않는다는 점을 유추할 수 있기 때문이다. 이를 식으로 .. 2022. 3. 29.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 구명보트 📍 프로그래머스 2단계 - 구명보트 문제 보기 무게 제한이 있는 구명보트를 최대한 적게 사용하여 사람을 태우는 문제인데, 처음에 people을 sort하는 것 까진 생각 했으나, 이후 로직(무게가 적은 순을 먼저 태워야 할지 높은 순을 먼저 태워야 할지?)은 해결하지 못했다. 해결법을 찾아보니 무게가 제일 많은 사람과 무게가 제일 적은 사람을 구명보트에 태우는 방법이 있었다. (왜 이런 생각을 못했을까 😄) 구체적인 로직은 다음과 같다. people을 내림차순으로 정렬한다. 무게가 제일 많이 나가는 사람과 무게가 제일 적게 나가는 사람의 합이 limit보다 작다면 둘 다 구명보트에 태운다. 무게가 제일 많이 나가는 사람과 무게가 제일 적게 나가는 사람의 합이 limit보다 크다면 무게가 제일 많이 나가는.. 2022. 3. 28.