본문 바로가기

분류 전체보기40

옵시디언 좋은 블로그 https://stephango.com/40-questions40 questions to ask yourself every yearEvery year I ask myself these 40 questions. I’ve shared this list with my family and closest friends, and always enjoy discussing answers as we reflect on th...stephango.comhttps://notes.yxy.ninja/?utm_source=Nomad+Academy&utm_campaign=b53cd60422-EMAIL_CAMPAIGN_2025_02_07&utm_medium=email&utm_term=0_4313d957c9-7ac123137e-36.. 2025. 2. 7.
git의 내부구조 대해 알아보자! git은 Content-addressable 파일 시스템이며VCS 사용자 인터페이스를 가지고 있음 !  Plumbing 명령과 Porcelain 명령 Plumbing 명령 : 고수준 명령어 - 우리가 사용하는 명령어들 ex) add, commit, branch 과 같은 Porcelain 명령 : 저수준 명령어 - git의 내부구조에 접근하는 명령어들   .git 디렉토리의 요소 - HEAD 파일 : 현재 Checkout 한 브랜치- index 파일 : Staging Area의 정보를 저장- object 디렉토리 : 모든 컨텐트를 저장하는 데이터베이스- refs 디렉토리 : 커밋 개체의 포인터(브랜치, 태그, 리모트 등)를 저장 Content-addressable 파일 시스템  git은 Content-ad.. 2025. 1. 7.
[알고리즘] 이진탐색이란? + 백준 2805번 나무 자르기 문제 이진탐색의 개념은 간단하다.  what? 목적은 무엇인가이진탐색의 궁극적 목적은 탐색! 즉 내가 원하는 타겟을 찾는 것이다. why? 왜 쓰는가그렇다면 어떻게 찾을 것인가? 완전탐색처럼 모든 요소를 돌아볼 수도 있겠지만, (시간복잡도 O(n)임) 정렬이 되어 있다면 그럴 필요가 없다! 숫자 맞추기 up & down 게임을 하는 것처럼 일단 중간을 찍고 범위를 반씩 줄여나가면 된다. (시간복잡도 logN임)훨씬 빠르다 ! 결국 이진탐색은 정렬이 되어있는 경우에내가 원하는 타겟을 모두 순회하는 것보다 빠르게 찾을 수 있는 알고리즘이다.  결국 정렬된 상태에서 무언가를 찾기 위한 좋은 탐색 방법이라는 것! plus !내가 풀었던 이진탐색 문제 중에이진탐색을 어떻게 써야할지 몰랐던 문제가 있는데, 대표적인 이진.. 2024. 12. 19.
[Spring Security] OAuth2 카카오 로그인 + Jwt 토큰 발급 + 추가 정보로 회원가입(1) 이번 프로젝트에서OAuth2 라이브러리와 카카오 API를 사용해서 로그인과 가입을 진행하고, JWT 토큰을 발급해주는 Auth 서버 파트를 맡아서 진행했다.  스프링으로 API 만드는 것만 해봤던 나는 ,, 뭐 배운대로 하면 되겠지? 하는 생각으로 흔쾌히 하겠다고 했다. 하지만 .... 일단 생각보다 프론트랑, 카카오 서버와 소통하는 전체 구조를 이해하는 것도,Spring Security를 쓰는 것도 어려웠다.. (시큐리티 이해는 둘째치고) 😵‍💫 일단 !! 여기다가 이렇게 전체적인 프로젝트를 복기해볼 생각이다! 스프링과 자바 모두 다루는게 거의 처음이라 문법이나, 코드 컨벤션, 객체지향 개념, 같은 것들이 엉망일 수 있다... 하면서 정말 느꼈던게 스프링 강의를 들어야 겠다는.....걸 느꼈고 그러.. 2024. 8. 19.
[카테부] 코테스터디 2주차 - N과 M(8) (백준 15657) 얘는 중복순열에서 오름차순인 애들만 출력한 것 즉 순서 X, 중복 O중복순열 코드에서 조건을 추가해서 오름차순인 애들만 뽑도록 했다. n, m = map(int, input().split())arr = list(map(int, input().split()))arr.sort()ans = []def print_ans(): for a in ans: print(arr[a], end=" ") print()def choose(cnt): if cnt >= m: print_ans() return for i in range(n): if cnt == 0 or i >= ans[cnt-1]: ans.append(i) .. 2024. 8. 13.
[카테부] 코테스터디 2주차 - N과 M(7) (백준 15656) # 중복 순열n, m = map(int, input().split())arr = list(map(int, input().split()))arr.sort()ans = []def print_ans(): for i in ans: print(arr[i], end=" ") print()def choose(cnt): if cnt > m: print_ans() return for i in range(0, n): ans.append(i) choose(cnt+1) ans.pop() choose(1)  https://alphaca202.tistory.com/11 [알고리즘] 백트래킹 - 경우의 수 문제원하는 조합과.. 2024. 8. 13.