전체 글 155

Shortest Unique Prefixes 와 Trie 자료구조

거 참 오늘 문제 풀기 딱 좋은 날씨네~☀️ 월요일 아침 아주 따끈한 문제가 도착했다.사실 알고리즘이니 뭐니 별 관심이 없었는데 말야... 이게 참 한번 쳐다만 보게되도 뭐 거의 홀리는 수준으로 하루 종일 파고들게 된단 말이지.... 흠...요망한 것(👿). 문제: Shortest Unique PrefixesGiven a list of words, return the shortest unique prefix of each word. 주어진 단어 목록에서 각 단어의 **최단 유일 접두사(Shortest unique prefix)를 찾아서 반환하시오.예시:[given the list]dogcatappleapricotfish[Return the list]dcappaprf 우선 이 문제를 풀기 위해 알아둬야할..

연속된 부분 배열의 최대합 (Kadane's Algorithm)

네!! 저는 요즘 ai랑 코드 테스트하는 재미에 푹 빠져있습니다!!!(누구한테 말하냐..?) 카다인 알고리즘으로 푸는 연속 부분 배열 최대 합 문제 설명정수로 이루어진 배열 nums가 주어졌을 때, 연속된 부분 배열 중 가장 큰 합을 구하세요.예시Input: [-2, 1, -3, 4, -1, 2, 1, -5, 4]Output: 6 "연속된 부분 배열 중 가장 큰 합을 구하시오."— 아니 나만 헷갈려? 연속된 부분 배열이라니… 연속된 숫자를 찾으라는 건가? 도대체 배열을 만들어야 하나? 문제 설명이 좀 모호한거 같다고 그래서 ai한테 따져 물었더니 이렇게 말했다. 사실 문제의 진짜 의도는 이거야:“주어진 배열 안에서, 숫자들이 연속해서 붙어 있는 모든 구간 중에서, 합이 제일 큰 구간을 찾아라.”예를 ..

코딩 테스트 자주 나오는 문제: 두 수의 합 (Two Sum)

코딩 테스트 단골손님: 두 수의 합 (Two Sum)면접관이 좋아하는 문제 Top 3 안에 반드시 들어가는 두 수의 합!(근거 없음.)심지어 파이썬, 자바스크립트, 자바, C++ 가리지 않고 나오는 무적의 인기 문제다. 이걸 몰라? 그럼 면접관이 속으로 "이 친구는 기본기가 부족하구만..." 할지도 모른다 🤔 (이 또한 근거없음.) 문제 설명정수 배열 nums와 정수 target이 주어졌을 때, 배열에서 두 수의 합이 target이 되는 인덱스를 찾아 반환하시오. 단, 딱 한 쌍만 존재한다는 전제가 있다 (즉, 여러 쌍 없음!). 입력 예시nums = [2, 7, 11, 15], target = 9// 출력: [0, 1] (2 + 7 = 9) 1. 순수 근성 풀이: 이중 for문음...... 그냥..

[DB] 로컬에 DB 설치하기(Mac)

부제 : 두 번째 백엔드 서버 개발기: 프론트개발자의 도전 회사에서 AI 관련 프로젝트가 우수수(?) 생기기 시작했다.사실... 우수수까지는 아니고.. 이번이 세번째 프로젝트.. 헷하나 빼고(그건 다른 팀에서 진행) 어쩌다보니 내 두번째 백엔드 서버 개발 도전기 (아니 나 진짜 프론트개발자인데...? 근데 이게 ......이게... 뭐지...? 근데 재밌네...? 새로와... 새로운거 조와....아이고 머리야...  뭐지 이 기분... 🤯)   프로젝트 시작!프로젝트 생성가상환경 만들고, 기본 세팅하면서 신나게 시작!코드 작성 중...스페이스 때문에 에러 한번 내주고DB 연결 로직 작성세션 관리 코드 작성CRUD 관련 파일도 생성필요한 유틸 함수도 만들고...그 다음은...? 또 들여쓰기 에러 한 번 ..

[인증 Framework] NextAuth야 너 뭐니?

2FA 도입 배경과 NextAuth 선정최초 계획은 이러했다.소셜 로그인 구현2FA 보안 강화이에 Next.js와의 통합성과 세션 관리 기능, 커스텀 인증 플로우 지원 등의 이유로 기능 구현에 있어 NextAuth를 선택(당)했다. NextAuth는 로그인 인증 및 세션 관리에 중점을 둔 인증 프레임워크로, 2FA와 같은 특정 인증 방식을 직접 제공하지는 않지만, 이를 기반으로 커스텀 구현이 가능하여 프로젝트 요구사항에 잘 부합한다고 보였다. 이미 구현을 위한 모든 준비를 끝냈을 때!! 소셜 로그인 기능을 제외시키고 이메일 로그인을 사용하기로 변경(당)했다. 2FA 구현 방법OTP(One-Time Password)시간 기반 일회용 비밀번호(TOTP)를 사용하여 사용자에게 동적 비밀번호를 제공.Google..

[Next.js] 로컬은 폰트 로드되는데 프로덕션은 로드 안됨(Development VS Production 간단 설명)

프로젝트 진행 중 한번은 개발(이하 로컬)에서는 멀쩡히 가져오던 font 소스가 Production(이하 프로덕션)에서는 제대로 가져오지도 적용하지도 못한 이슈를 확인해 본 적이 있다. 프로젝트 구성Next.js 14React 18(page router)font: Pretendard, Montserrat 신규 배포가 아니라 이미 3개월 동안은 font가 제대로 사용되고 있었던 지라 당최 이유가 뭔지 알 수 없었다.적용 코드.font를 global.scss 파일에서 cdn import 함. 로컬에서 실행 시에는 network를 통해 font 다운로드가 확인됨.사용 CDNhttps://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pre..

[번역] Strategies for Cache-Busting CSS

** 번역에 의역과 오역이 충분히 있을 수 있으므로, 가능하신 분들은 그냥 아래의 링크로 가셔서 원문을 읽어보시길 추천합니다~ https://css-tricks.com/strategies-for-cache-busting-css/ Strategies for Cache-Busting CSS | CSS-Tricks Major performance gains are to be had from browser caching CSS. You ensure your server is set up to send headers that tell the browser to hang onto the CSS css-tricks.com CSS 브라우저 캐싱에서 주요 성능을 향상 시킬 수 있다. 주어진 시간동안 CSS 파일을 파악하..

[알고리즘] 시간 복잡도(Time Complexity)

알고리즘? 컴퓨터에게 내리는 지시사항을 나열한 것 시간 복잡도? 시간 복잡도는 n개의 입력 데이터에 대해 알고리즘이 문제를 해결하는데에 얼만큼의 시간(걸리는 절차 수)이 걸리는지를 나타내는 것을 말한다. 일반적으로 시간 복잡도를 나타내기 위해 점근적 표기법(asymptotic notation)을 사용한다. 점근적 표기법 - 중요하지 않은 상수와 계수들을 제거해 알고리즘의 실행 시간에서 중요한 성장률에 집중하는 방법을 의미함 점근적이라는 의미는 가장 큰 영향을 주는 요소만 계산한다는 의미 점근적 표기법에는 다음과 같은 세가지가 존재한다. 오메가 표기법(Big-Ω notation) 세타 포기법(Big-θ notation) 빅오 표기법(Big-O notation) 효율적인 방법을 고민한다는 것은 시간 복잡도를..

[git] git pull 시 발생하는 warning(Need to specify how to reconcile divergent branches)

위와 같은 에러가 떴을 경우, 힌트로 제공된 세가지 옵션 중 하나로 상황을 해결한 적이 있을 것이다. 종종 마주치게 되는 에러인데 이번 기회에 정확히 알고 넘어가야겠다! 우선 먼저 위의 상황은 local과 remote의 싱크가 맞지 않아 브랜치가 갈라졌다는 것이다. 1. git config pull.rebase false #merge (the default strategy) 기존의 git pull 방식과 동일하다. pull을 받으면 불필요한 merge commit 이 생성된다. 3-way merge로 새로운 커밋을 만들어낸다. 2. git pull.rebase true # rebase * rebase란? 로컬에서 변경된 사항을 patch로 만들고 이를 다시 remote에 적용시키는 것을 말한다. reba..