본문 바로가기

전체 글

(105)
onboarding ( 로그인 , 회원가입 ) 세팅 세팅 목표Vite + Typescript 기반 프로젝트 설치zustand, tanstack query, tailwind css(또는 styled-components), react-router-dom 세팅환경변수 세팅 및 폴더구조 구성하기json placeholder를 이용하여 외부 통신 테스트 하기JWT 기술분석 : access, refresh token의 개념과 관리전략 blog 작성회원가입, 로그인, 마이페이지 페이지 컴포넌트 구현필수기능 : 회원가입, 로그인, 프로필 변경tailwind 또는 styled-components를 이용한 스타일링JWT 인증서버를 활용하여 access token 기반 페이지 권한 처리(라우팅 제어) vite를 ts로 설정yarn create vite . --template..
이상한 문자 만들기 문제 설명문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.function solution(s) { const words = s.split(" ") const answer = words.map(word => ( word.split("").map((c, i) => { if(i % 2 === 0) return c.toUpperCase(); return c.toLowerCase(); }).join("") )).join(" ") return answer;} 입력 받은 ..
최대공약수 최대공배수 function solution(n, m) { let gcd = 1; let lcm = 0; const answer = []; for (let i = 1; i  풀이를 위해 유클리드 호재법을 이용했습니다. 유클리드 호제법의 원리는 두 수를 나눈 나머지를 r이라고 할 때, 두 수 중 작은 수와 r의 최대공약수가 두 수의 최대공약수와 같다는 것이다. 이러한 과정을 반복하다가 나머지가 0이 될 때 나누는 수가 두 수의 최대공약수인 것입니다. 위를 활용하여 최대 공약수는 1부터 N(a, b 중 작은 수)까지 순회하면서 a와 b를 각각 나누었을 때 그 나머지가 둘 다 0이되는 수, 즉 나누어 떨어지는 수를 찾고최소 공배수는 두 수를 곱한 값을 최대공약수로 나눈 수임을 활용하여 풀이했습니다.
직사각형 별찍기 process.stdin.setEncoding('utf8');process.stdin.on('data', data => { const n = data.split(" "); const a = Number(n[0]), b = Number(n[1]); for(i=0; i 1. process.stdin.setEncoding('utf8');setEncoding('utf8'): 표준 입력(사용자가 입력하는 값)이 UTF-8 인코딩으로 처리되도록 설정합니다. UTF-8은 일반적으로 텍스트를 처리할 때 사용하는 인코딩 방식이에요. 이 부분은 사용자가 입력하는 값(예: 5 3)을 문자열로 처리하기 위한 설정이에요.2. process.stdin.on('data', data => { ... })process..
WelKo_개선 ( 채팅 ) supabase에서 realtime 적용이 필요한 테이블에만 설정  export const fetchMessages = async (senderId: string, receiverId: string, postId: string) => { const { data, error } = await supabase .from('messages') .select( ` *, sender:users!messages_sender_id_fkey ( id, name, avatar ), receiver:users!messages_receiver_id_fkey ( id, name, avatar ) ` ) .eq('post_id', postId) .or( ..
WelKo PDF
WelKo const [error, setError] = useState('');상태를 문자열이 아닌 JSX 요소로 처리하도록 변경하거나, 상태는 문자열로 유지하고 렌더링 단계에서 JSX 요소로 변환하여 아래 코드 처럼 함수 내에서 html 태그 사용  if (value.length >= 15 && !isMobile) { setError(Nickname cannot exceed 15 characters.); } else { setError(''); }  let toastId = null; const handleNicknameChange = (e: React.ChangeEvent) => { const value = e.target.value; const isMobi..
WelK SweetAlert2의 customClass에서 bg-* 클래스는 제대로 적용되지만, text-* 클래스가 예상대로 동작하지 않는 경우가 있을 수 있습니다. 이 문제는 SweetAlert2의 HTML 구조와 Tailwind CSS의 유효성 검사 또는 적용 방식 사이의 차이에서 발생할 수 있습니다.  const result = await MySwal.fire({ title: 'Do you want to delete your post?', text: 'If you delete, you can always rewrite it later', icon: 'warning', showCancelButton: true, confirmButtonText: 'Delete ..