일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 리액트 프로젝트
- 타입스크립트 리액트
- 타입스크립트
- 파이썬 for in
- 파이썬 딕셔너리
- REACT
- 파이썬 slice
- 내배캠 프로젝트
- 파이썬 enumerate
- 파이썬 for
- 리액트 훅
- React Hooks
- 파이썬 반복문
- 자바스크립트
- 리액트 공식문서
- Next 팀 프로젝트
- 한글 공부 사이트
- 리액트
- tanstack query
- JavaScript
- 내일배움캠프 최종 프로젝트
- typeScript
- 코딩테스트
- 내일배움캠프 프로젝트
- useEffect
- 타입스크립트 props
- useState
- 내일배움캠프
- 파이썬 replace
- Today
- Total
목록전체 글 (303)
sohyeon kim
📝 문제카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다.다음은 카카오 아이디의 규칙입니다.아이디의 길이는 3자 이상 15자 이하여야 합니다.아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다.단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다."네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이디가 카카오..
💡 쿠키와 웹 스토리지의 차이점 🍪 쿠키 : 브라우저의 작은 저장소웹사이트 접속 ➡️ 서버가 브라우저로 쿠키 보냄 ➡️ 브라우저는 컴퓨터에 쿠키 저장➡️ 다시 웹사이트에 접속하거나 리퀘스트를 보내면 쿠키를 서버로 자동으로 전송이름과 값으로 관리하는 문자열 데이터브라우저가 서버로 리퀘스트를 보낼 때 자동으로 보내짐쿠키 하나당 용량은 최대 4KB, 브라우저에 따라 다르지만 사이트 하나당 약 20개 정도의 쿠키 허용(자동으로 서버에 보내지다보니 네트워크에 부담을 주지 않으려고(리퀘스트 헤더의 크기가 커지므로) 용량에 제한이 있음)누군가 중간에 쿠키를 탈취할 수도 있어, 민감한 개인 정보나 보안 관련 내용은 저장하지 않도록 주의사이트마다 따로 쿠키를 관리, 네이버에선 구글의 쿠키에 접근할 수 없음 (구글, ..
📝 문제햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, 빵 – 야채 – 고기 - 빵)로 쌓인 햄버거만 포장을 합니다. 상수는 손이 굉장히 빠르기 때문에 상수가 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없으며, 재료의 높이는 무시하여 재료가 높이 쌓여서 일이 힘들어지는 경우는 없습니다.예를 들어, 상수의 앞에 쌓이는 재료의 순서가 [야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵]일 때, 상수는 여섯 번째 재료가 쌓였을 때, 세..
💡 선형 탐색보단 이진 탐색을![2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53] 16개의 데이터 선형 탐색 O(n)순서대로 하나씩 탐색, 정렬된/정렬되지 않은 리스트 모두 사용 가능, 데이터가 큰 경우 성능 저하최선의 경우 - 1개의 값만 확인 (2를 찾을 때)최악의 경우 - 16개의 값 확인 (없는 숫자를 찾을 때)이진 탐색 O(lg n)반으로 범위를 줄여가며 중앙값을 탐색, 정렬된 리스트에서만 사용 가능, 데이터가 큰 경우 뛰어난 성능 보임최선의 경우 - 중앙의 1개의 값만 확인 (19를 찾을 때)최악의 경우 - 4개의 값 확인 (없는 숫자를 찾을 때) 👀 데이터가 커질수록 성능 차이가 극명해진다.128개의 데이터 ➡️ 선형 탐색 - 12..
📝 문제 🫠 나의 풀이def solution(keymap, targets): dic = {} answer = [] for key in keymap: for idx, val in enumerate(key): if val not in dic or dic[val] > idx + 1: dic[val] = idx + 1 for target in targets: count = 0 for word in target: if word in dic: count += dic[word] else: count = -1 ..
📝 문제사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다.그리워하는 사람의 이름..
💡제어 컴포넌트 useState 와 비제어 컴포넌트 useRef 를 비교해보자!제어 컴포넌트React 에 의해 값이 제어되는 입력 폼 엘리먼트사용자의 입력을 기반으로 state 를 관리하고 업데이트한다.모든 input 이 변경될 때 마다 리렌더링import React, { useState } from 'react';function MyInput() { const [inputValue, setInputValue] = useState(null); const handleChange = (e) => { setInputValue(e.target.value); }; return handleChange(e)} value={inputValue} />;} 비제어 컴포넌트React 에서 값이 제어되지 않는..
📝 문제네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다.전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다."지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다.암호화된 배열은 지도의 각 가로줄에서 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/FiD3V/btsIWbyv569/zULU2oJbg3y7aTARfeaaak/img.png)
💡 작고(small) 빠르고(fast) 확장가능한(scalable) 상태관리 솔루션 yarn add zustand & 스토어 생성 bearsStore.jsimport { create } from 'zustand';const useBearsStore = create((set) => { return { bears: 0, // 초기값 increase: () => { // 1씩 증가 set((state) => ({ bears: state.bears + 1 })); }, init: () => set({ bears: 0 }), // 초기화 };});export default useBearsStore; App.jsxfunction App() { // const bears = u..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/o98M0/btsIWgFA6Pl/8kmRBipu1ZfKJJgabsiKL1/img.png)
💡 데이터 패칭이 일어나 기존 데이터에 fetched data 를 추가하고자 할 때 유용하게 사용할 수 있는 hook 더보기 UI 또는 무한스크롤 UI 에 사용하기에 적합!const { data: movies, hasNextPage, fetchNextPage, isFetchingNextPage, } = useInfiniteQuery({ queryKey: ["movies"], // 페이지 없이 키만 전달 queryFn: fetchMovieData, getNextPageParam: (lastPage) => { console.log("getNextPageParam 호출"); console.log("lastPage: ", lastPage); ..