일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- customModal component 만들기
- programmers
- next-pwa
- Recoil
- 배열
- lifecycle
- 투두리스트
- todolist
- Firebase
- useMutation
- JS
- Redux
- csr
- React
- 넥스트
- NextJS
- 리엑트
- JavaScript
- react-query
- 리액트
- Next
- SSR
- 생명주기
- debounce
- 달리기경주
- 겹치는 선분의 길이
- 리덕스
- 파이어베이스
- google firebase
- 자바스크립트
- Today
- Total
목록programmers (7)
끄적끄적

처음문제를 보면 굉장히 간단해 보인다. participant를 한번 돌면서 completion을 보고 포함이 안되어있는 사람을 찾으면 되는 것이다. 그렇게 만만하게 문제를 보고 풀었더니 역시나 시간초과 였다. #잘못된 풀이 //잘못된 풀이 방식 (시간 초과) function solution(participant, completion) { return participant.filter(d => { if(completion.includes(d)){ let i = completion.indexOf(d); completion.splice(i,1); return false; } else return true; })[0] } 그러므로 최대한 배열을 사용안하는 방법을 생각해 보았다. 1. 먼저 p라는 객체에 part..

처음 문제를 보자마자 객체 하나로 싹 넣어서 하면 될 거같다는 생각이 왔다. 근데 마지막에 살짝 삐긋했던 것은 원하는 값은 정지당한 사람의 수가 아닌 a가 [b,c,...]를 신고했을때 신고당한 사람들 중 정지를 당한 사람의 수의 배열이다. 풀이방식은 다음과 같다. 1. p라는 객체에 누가, 누구를 신고했는지 저장한다. 2. 신고내역을 하나씩 보며 p를 작성한다. 3. p를 보고 각 id당 신고당한 회수를 살펴보고 조건보다 많이 되어있는 정지당할 사람을 추출한다. 4. 정지당한 id를 신고한 id를 추출한다 p = { 'id1': { 'id2': 0, 'id3': 0, 'id4': 0 }, 'id2': {...} ... } //solution function solution(id_list, report,..

처음에 문제를 봤을 땐 stack이 바로 떠오르지 않았다. ingredient의 길이가 1백만 이기에, 만일 for문을 2번 돈다 해도, 시간초과의 늪에 걸릴줄 몰랐다.. 잘못된 문제 해결을 먼저 보자. // 잘못된 접근 let str = ingredient.join(''); while(str.indexOf('1231') !== -1){ if(str.indexOf('1231') !== -1){ answer++; str.replace('1231', '') } } ... 이렇게 되면 만약 최악의 경우를 생각해본다면 n^2의 시간복잡도가 나올 수 있었을 것 같다. 사실 이걸 알았음에도 불구하고 1백만이라는 너무 약하게 본것도 있다. 다시 돌아와 배열을 이용한 stack 의 풀이 방식을 작성했다. 방식은 배열에..

문제는 문자열 S 의 각 문자를 Index 만큼 알파벳상의 순서 뒤로 미는데, Skip에 포함된 스펠링은 건너 뛰라는 것이다. 처음엔 아스키코드로 하는것이 편할까 하였지만, 다행히 알파벳은 몇개 되지 않기에 배열을 선택했다. 1. 배열로 먼저 a부터 z까지 저장을 해놓은뒤 2. skip에 포함되어있는 스펠링을 배열에서 지우고 3. 문자열 s를 index만큼 배열에 기반하여 밀어주기만 하면된다 4. 여기서 문자열이 배열을 넘어가면 다시 앞에서부터 순서를 해야하기 때문에 길이만큼 모듈러연산? 즉 나눠주기만 하면된다. function solution(s, skip, index) { var answer = ''; let alpha = ['a','b','c','d','e','f','g','h','i','j','k..

문제를 보자마자 가장 먼저 떠오른 것은 'object' 구조로 만들어야 겠다! 였습니다. 하도 programmers에서 배열을 사용하면 런타임에러와 같은 index나 시간초과 에러들이 많이 발생해 가장 효율적인 구조를 찾는 것이 첫번째 생각이었습니다. 먼저 알파벳을 모두 객체의 key로 저장을 하고, 0으로 값을 넣어줍니다. const alphaNum = { 'A': 0, 'B': 0, ...생략 'Z': 0, } 그리고 먼저 입력값인 keymap 을 보고 스펠링을 읽어 각 스펠링이 몇번째에 위치하는지를 파악하고, 파악했을때 이미 해당 알파벳이 위치가 정해져있다면, index의 대소비교, 정해져있지 않다면 저장을 하였습니다. for(let i=0; i

현재 프로그래머스 Lv 1임에도 불구하고 정답율이 22%를 기록하고 있길래, 도전 의식이 생겨서 도전 해본 문제이다. 문제를 간단히 요약하자면, friends라는 string array를 받고, gifts라는 string array를 받는데 좌측은 선물을 준사람, 우측은 선물을 받는 사람이다. 이때 위의 조건으로 각 friend 중 다음달에 가장 많은 선물을 받은 사람을 구하는 것이다. 이 문제는 개인적으론 처음부터 어떤 자료구조를 사용하여 선물받았던 기록, 선물점수, 등을 저장해놓고 사용하는지가 관건인 것 같았다. 나는 다음과 같이 데이터 구조를 잡았다. person = { name: { 'name': name, 'send: { // 현재 friend가 준 사람과 개수 '철수': 2, '영미': 0, ..