분류 전체보기 114

[스프링] 프로젝트 N+1 해결하기 (fetch join

나의 팀 프로젝트 미간지! https://miganzi.vercel.app/ 미간지 나만 알고 있는 우리 동네의 미지의 공간을 특별한 큐레이팅을 통해 소개 miganzi.vercel.app 사이트는 이렇게 되어있고 메인에 들어가면 2개의 요청이 날아간다 reissue는 토큰이 종료되었을때 날아감 posts는 게시물 (무한스크롤) popular-post는 말그대로 인기 포스트이다 (페이지 맨위에 나오는 게시물) 하지만 posts 쿼리의 상태가?? 맛있게 N+1 나가는 모습!! 1 2 3 4 5 6 7 @Operation(summary = "전체 게시물 조회 API") @GetMapping("/posts") public Slice getBoardList( @PageableDefault (size = 6,so..

스프링부트 2023.09.01

[알고리즘] 이분 매칭

이분 매칭 알고리즘 이분 매칭 알고리즘은 그래프 이론과 연관된 문제를 푸는 데 사용되는 알고리즘 중 하나로, 주로 "양쪽 그룹 사이의 최적의 매칭"을 찾는 데 활용됩니다. 예를 들어, 여러 학생과 각 학생마다 선호하는 동반자가 주어졌을 때, 이분 매칭 알고리즘은 모든 학생들이 서로 다른 동반자와 짝지어지며 최대한 많은 학생들이 선호하는 동반자와 짝지어지는 최적의 방법을 찾아냅니다. 동작 원리 1. 이분 그래프 생성: 먼저, 매칭을 하려는 두 그룹을 각각 왼쪽(L)과 오른쪽(R)으로 나누어 이분 그래프를 생성합니다. 이분 그래프는 왼쪽 그룹의 각 노드와 오른쪽 그룹의 각 노드 사이에 연결된 간선을 나타냅니다. 2. 초기 매칭 설정: 초기에는 모든 노드는 매칭되지 않은 상태입니다. 이후 알고리즘을 통해 매칭..

알고리즘 2023.08.30

[스프링부트] 개인 프로젝트 버그 고치기

링크 구글, 원스토어 나의 축구 지식테스트 앱이다... 일단 내 앱은 배포하고 돌아간 상태였고 DB를 확인해보니 똑같은 닉네임이 저장되고 있었다... 왜그럴까 확인해보았다... 내 앱은 이렇게 처음에 닉네임을 설정(체크) 하고 회원가입되는 순서로 진행된다. 동작순서는 프론트에서 닉네임을 입력후 설정하기 버튼을 누르면 API 순으로 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 @Operation(summary = "프론트유저 닉네임 조건설정 API") @PostMapping("/front-user/check") @ResponseBody public String CheckNickName(String nickName) { boolean matches = nickName.ma..

스프링부트 2023.08.27

스프링 오픈소스 컨트리뷰트 하기

팀프로젝트를 하던 도중 프론트 개발자분이 나에게 오픈소스 기여하는거 별거 아니라던데요? 라고 말해주셔서 아 그럼 한번 해볼까 하고 프로젝트를 찾아보았다. 무슨 프로젝트를 해야할지 몰라서 gpt 한테 한번 물어봤다.(검색해서 찾아보다가 GPT가 생각났음..) 처음엔 너무 큰 프로젝트를 알려줘서 다시 물어봤다.. 10개정도 알려줬는데 그냥 첫번째 있는 반려동물 관리 프로젝트로 들어갔다. 스타는 6.7K!! 귀요미 펫관리 프로젝트... 처음엔 프로젝트를 살펴보았다. 펫관리하는 owners를 추가할수있다.. 나는 습관적으로 이상한값들을 넣어보는 습관이 있기때문에 한번 체크해보았다.. 음.. null값은 체크하고있고.. 그렇다면 whitespace(공백) 를 한번 넣어볼까? 전화번호를 제외한 부분이 통과되고 있었..

그냥 코딩 2023.08.25

[프로그래머스] 110 옮기기 Python(파이썬) 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/77886 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 110 옮기기 문제 설명 0과 1로 이루어진 어떤 문자열 x에 대해서, 당신은 다음과 같은 행동을 통해 x를 최대한 사전 순으로 앞에 오도록 만들고자 합니다. x에 있는 "110"을 뽑아서, 임의의 위치에 다시 삽입합니다. 예를 들어, x = "11100" 일 때, 여기서 중앙에 있는 "110"을 뽑으면 x = "10" 이 됩니다. 뽑았던 "110"을 x의 맨 앞에 다시 삽입하면 x = "1101..

프로그래머스 2023.03.31

[프로그래머스] 광물 캐기 - Python(파이썬) 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 마인은 곡괭이로 광산에서 광석을 캐려고 합니다. 마인은 다이아몬드 곡괭이, 철 곡괭이, 돌 곡괭이를 각각 0개에서 5개까지 가지고 있으며, 곡괭이로 광물을 캘 때는 피로도가 소모됩니다. 각 곡괭이로 광물을 캘 때의 피로도는 아래 표와 같습니다. 예를 들어, 철 곡괭이는 다이아몬드를 캘 때 피로도 5가 소모되며, 철과 돌을 캘때는 피로도가 1씩 소모됩니다. 각 곡괭이는 종류에 상관없이 ..

프로그래머스 2023.03.24

[프로그래머스] 리코쳇 로봇 - Python(파이썬) 풀이

[프로그래머스] 리코쳇 로봇 - Python 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 리코쳇 로봇이라는 보드게임이 있습니다. 이 보드게임은 격자모양 게임판 위에서 말을 움직이는 게임으로, 시작 위치에서 목표 위치까지 최소 몇 번만에 도달할 수 있는지 말하는 게임입니다. 이 게임에서 말의 움직임은 상, 하, 좌, 우 4방향 중 하나를 선택해서 게임판 위의 장애물이나 맨 끝에 부딪힐 때까지 미끄러져 이동하는 것을 한 번의 ..

프로그래머스 2023.03.24

[leetcode] Sum of Two Integers

문제 Given two integers a and b, return the sum of the two integers without using the operators + and - 어떻게 풀지 고민하다 비트 연산자 라는건 생각을 했는데 계속 틀려서 답을 봐버림 def getSum(a, b): mask = 0xffffffff while (b & mask > 0): carry = (a & b) 0 else a 마지막 return 부분이 왜 저럴까 생각하고 음수를 넣어서 디버깅 돌려보니 이해가됨...(사실 100%는 안됨) 이런거 풀때마다 머리가 아프다.....

리트코드 2022.12.26