분류 전체보기100 피보나치 수 런타임 에러 문제피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.예를들어F(2) = F(0) + F(1) = 0 + 1 = 1F(3) = F(1) + F(2) = 1 + 1 = 2F(4) = F(2) + F(3) = 1 + 2 = 3F(5) = F(3) + F(4) = 2 + 3 = 5와 같이 이어집니다.2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 문제풀이function solution(n) { let newArr = [0, 1, 1] let fib = (n) => { if(newArr[n] !== un.. 2024. 6. 22. [JS]JadenCase 문자열 만들기 문제 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.sreturn "3people unFollowed me" "3people Unfollowed Me" "for the last week" "For The Last Week" 문제풀이function solution(s) { var answer = ''; let aa = s.split(" ") for(let i = 0; i 기존 문제 풀이는 이랬는데 자꾸 런.. 2024. 6. 7. [JS] 퀵정렬, 병합정렬과의 비교 1. 소개퀵정렬이란 pivot(중심축)을 정하고, 중심축 보다 작은 값들은 왼쪽으로, 큰 값들은 오른쪽으로 보내는것이다.pivot을 정해 왼쪽 오른쪽으로 나누고 다시금 왼쪽 오른쪽에 대해 재귀적으로 pivot을 정해 왼쪽 오른쪽을 나누고.. 이 과정을 반복하다보면 결국 정렬이 완성 된다. 2. 작동개념분할: 입력 배열을 피벗을 기준으로 비균등하게 2개의 부분배열로 분할한다.정복: 부분배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않으면 순환 호출을 이용해 다시 분할 정복 방법을 적용한다.결합: 정렬된 부분 배열들을 하나의 배열에 합병한다.순환 호출이 한번 진행될 때마다 최소한 하나의 원소(피벗)는 최종적으로 위치가 정해지므로, 이 알고리즘은 반드시 끝난다는것을 보장할 수 있다. 3. 시간복잡도평균적으.. 2024. 5. 12. [JS] 병합정렬 1. 소개병합정렬은 대표적은 분할정복 알고리즘 중 하나로, 리스트를 반으로 나눈 뒤 각각을 재귀적으로 정렬하고, 정렬된 두 리스트를 합쳐 하나의 리스트를 만드는 알고리즘 이다. 2. 작동개념일반적으로 세 단계로 구성된다.분할: 입력리스트를 같은 크기의 두개의 부분 리스트로 분할한다. 이때 분할은 리스트의 중간 지점에서 수행된다.정복: 각 부분 리스트를 재귀적으로 병합정렬을 이용해 정렬한다. 이 과정은 입력 리스트의 크기가 충분히 작아질 때까지 반복된다.병합: 정렬된 두 부분 리스트를 하나의 정렬된 리스트로 병합한다. 3. 시간 복잡도O(n log n) 계속 나누고 나눈 다음 합치고 또 합칠 뿐이기 때문에 병합 정렬은 예외 케이스가 없다.(안정성) 4. 구현2가지 함수를 이용해 구현할 수 있다.mergeS.. 2024. 5. 12. redis cloud 이용해 조회수 기능 구현하기 작품과 컬렉션을 조회하면 조회수가 올라가는 기능을 구현하려 한다.내가 생각했을때 필요한 로직은 다음과 같다.1. 로그인 사용자와 비로그인 사용자 둘다 조회수에 영향을 준다.2. 여러번 조회했을때는 한시간에 한번만 조회수에 영향을 준다. 해당기능을 구현하기 위해서는 여러가지 방법이 있다.1. 쿠키를 이용하는 방법. 2. 세션을 이용하는 방법3. 레디스 서버를 이용하는 방법. 이 중에서 내가 고려한것은 쿠키 또는 레디스를 이용하는 방법인데,쿠키를 이용하려면 사용자가 작품을 조회하면 쿠키에 작품 아이디를 넣어 돌려준다.작품 조회 할때마다 사용자가 갖고있는 쿠키에 작품아이디가 있는지 확인해서 있으면 중복조회로 간주, 없으면 조회수 1 추가. 이런식으로 로직을 구현하면 된다.그러나 쿠키에 담을 수 있는 데이터에.. 2024. 4. 30. Nest.js, SSE(server sent event)를 이용해 알림띄우기(해결안됨) 1. 개요 이번에 구현할 서비스는 사용자가 작성한 댓글과 컬렉션에 각각 좋아요나 북마크 갯수가 일정 수 이상 추가됐을시 알림을 띄워주는 기능이다. 마이페이지의 알림 버튼을 누르면 사용자와 관련된 알림이 뜨게 하고싶은게 이번 구현 목표 추가로는 사용자를 다른 사용자가 팔로우 했을때도 알림을 띄우고싶다. 이건 아마 댓글, 북마크와 비슷할거같아서 먼저 끝내놓고 구현해 볼 계획이다. 이 기능을 구현하기 위해 가장 먼저 떠오른건 소켓이다. 웹소켓은 양방향 통신을 이용해 대표적으로는 채팅서비스를 만들때 많이 사용하는 기술이다. 하지만 서치를 좀 해본 결과, 내가 구현할 기능은 양방향 통신이 필요없을것으로 예상되었고 보통 알림서비스를 만들기 위해서는 SSE를 많이 사용한다는것을 알게 되었다. 그럼 둘의 차이는 무엇일.. 2024. 4. 22. 동기와 비동기 / Deadlock 동기/비동기 : 요청한 작업에 대해 완료여부를 신경 써서 작업을 순차적으로 수행할지 아닌지에 대한 관점 블로킹/논블로킹: 단어 그대로 현재 작업이 block 되느냐, 아니냐에 따라 다른 작업을 수행할 수 있는지에 대한 관점 보통 비동기 특징을 성능과 연관지어 말한다. 왜냐하면 요청한 작업에 대해 완료여부를 신경쓰지 않고 자신의 그 다음 작업을 수행한다는 것은, I/O 작업과 같은 느린 작업이 발생할 때, 기다리지 않고 다른 작업을 처리하면서 동시에 처리하여 멀티 작업을 진행할 수 있기 떄문이다. 이는 전반적인 시스템 성능 향상에 도움을 줄 수 있다. 데드락 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태. '교착상태'라고도 하며 시스템적으로 한정된 자원을 여러곳에서 사용하려고 할 때 발생한다... 2024. 4. 22. Nest) request Query nullable 명시했으나 오류가 생기는 문제 @ApiOperation({ summary: '리뷰 조회' }) @Render('detailContent') @Get() async getCReivew( @Param('webContentsId', ParseIntPipe) webContentsId: number, @Query('page', ParseIntPipe) page?: number, @Query('order') order?: string, @Query('option') option?: string, ) { const result = await this.reviewService.getCReviews( webContentsId, page, order, option, ); const { content, reviewList, totalPages } = r.. 2024. 4. 18. Promise, asyc/await, Hoisting Promise 자바스크립트 프로미스는 비동기 프로그래밍의 근간이 되는 기법 중 하나이다. 프로미스를 사용하면 콜백 함수를 대체하고, 비동기 흐름을 쉽게 제어할 수 있다. 프로미스 객체는 비동기 작업의 최종완료 또는 실패를 나타내는 Array 나 Object처럼 독자적인 객체라고 보면 된다. 비동기 작업이 끝날 때까지 결과를 기다리는것이 아니라, 결과를 제공하겠다는 '약속'을 반환한다는 의미에서 Promise라 명명 지어졌다고 한다. 비동기는 다같이 땅 해서 달리는거 동기는 릴레이 달리기. 바톤을 넘겨줘야 코드 실행가능~~ async/await Hoisting 2024. 4. 17. 이전 1 2 3 4 5 ··· 12 다음