-
2차 프로젝트: GameLog 2일차
UserGame 설계 과정 — 데이터 생명주기와 책임 범위 고민게임 라이브러리와 리뷰 기능을 구현하면서 UserGame을 어떻게 관리할지 고민했다.단순히 게임을 라이브러리에 등록하고 상태를 변경하는 정도로 생각했지만, 리뷰 작성 기능까지 연결하면서 UserGame의 생성·수정·삭제 시점과 각 기능의 책임 범위를 명확하게 정할 필요가 있었다.1. 리뷰 작성과 게임 등록의 책임이 겹치는 문제팀원별로 기능을 나누어 구현하고 있었는데, 리뷰 작성 기능에서도 플레이 상태나 플레이 기록을 수정해야 했다.예를 들어 리뷰를 작성하면서 플랫폼이나 플레이 시간, 플레이 상태를 함께 입력할 수 있다.그렇다면 리뷰를 담당하는 팀원이 UserGameRepository나 UserGame을 직접 수정해야 하는데, 이렇게 되면 게임..
2026.09.15
-
2차 프로젝트: GameLog 1일차
GameLog 프로젝트 시작이번 프로젝트에서는 게임 기록 및 리뷰 서비스 GameLog를 개발한다.GameLog는 여러 플랫폼에서 플레이한 게임을 한곳에 기록하고, 플레이 경험과 리뷰 데이터를 바탕으로 나만의 게임 라이브러리를 만들고 새로운 게임을 추천받을 수 있는 서비스이다.한 게임의 기록이, 다음 인생 게임을 찾는다. 1. 문제 탐색 및 정의어떤 문제를 해결하려는가?게임을 여러 플랫폼에서 플레이하다 보면 내가 어떤 게임을 플레이했는지, 어떤 게임을 완료했는지 기록이 분산되는 문제가 있다.Steam, PlayStation, Nintendo 등 각 플랫폼에서는 자신의 게임 목록을 확인할 수 있지만, 여러 플랫폼에서 플레이한 게임 기록을 한곳에서 관리하기는 어렵다.또한 새로운 게임을 선택할 때도 수많은 게..
2026.09.14
-
백엔드 데브코스 12기 45일차
오전에는 개발자 글쓰기 특강을 들었다. 이력서, 포트폴리오, 블로그 등을 작성할 때 어떤 내용을 중심으로 작성하면 좋은지 배웠다.특히 프로젝트를 진행하면서 블로그에 글을 작성할 때, 단순히 어떤 기능을 구현했는지만 적는 것이 아니라 어떤 문제를 직면했고, 그 문제를 어떻게 해결했으며, 이후 어떻게 개선하고 발전시켰는지 성장 과정을 자세하게 기록하는 것이 좋다고 하셨다.지금까지는 프로젝트에서 구현한 기능이나 배운 내용을 중심으로 작성했다면, 이번 2차 프로젝트에서는 문제를 해결해 나가는 과정까지 좀 더 자세하게 기록해보려고 한다. 나중에 다시 봤을 때 내가 어떻게 성장했는지 확인할 수 있도록 기록을 남기는 것이 목표이다. 오후에는 2시간 동안 알고리즘 시험을 보고, 이후 3시간 동안 Web 시험을 봤다.알..
2026.09.12
-
백엔드 데브코스 12기 44일차
오늘 오전에는 이진 탐색, 파라매트릭 서치, 최대/최소 힙에 대한 이론을 공부했다. 이론 자체는 이해하는 데 크게 어렵지 않았는데, 오후에 배운 내용을 활용해서 알고리즘 테스트를 풀어보니 생각보다 훨씬 어려웠다.특히 힙은 코드 자체는 간단한 편인데, 문제를 보고 ‘힙을 사용해야겠다’고 떠올리는 과정이 가장 어려웠다. 이진 탐색도 단순히 이진 탐색을 구현하는 것보다 어떤 값을 기준으로 범위를 나누고 어떤 조건으로 탐색해야 하는지 판단하는 게 어려웠다. 역시 알고리즘은 이론을 이해하는 것과 실제 문제를 해결하는 것 사이에 차이가 큰 것 같다. 꾸준히 공부해야 한다는 걸 알고 있지만 귀찮다는 이유로 매일 실천하지 못하고 있었다. 이제는 귀찮음은 잠시 내려놓고 매일 하나라도 알고리즘 문제를 풀어보는 습관을 만들..
2026.09.10
-
[프로그래머스 Lv.2] 디펜스 게임(Java)
문제https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이매 라운드마다 적의 수를 우선순위 큐에 저장하고, 무적권을 사용할 수 있는 k개의 라운드는 적의 수가 많은 순서로 처리하는 것이 유리하다.이를 위해 PriorityQueue를 사용한다. 기본 PriorityQueue는 가장 작은 값부터 꺼내는 최소 힙이므로, 지금까지 만난 적의 수 중 가장 작은 값을 poll()하여 병력 n에서 차감한다.pq.offer(enemy[i]);if (pq.size() > k) { n -= pq.poll();} 현..
2026.09.10
-
[Java] 이진탐색(Binary Search)
1. 이진 탐색이란?이진 탐색(Binary Search)은 정렬된 배열에서 원하는 값을 빠르게 찾는 탐색 방법이다.배열의 가운데 값을 확인한 뒤, 찾는 값이 가운데 값보다 작은지 큰지에 따라 탐색 범위를 절반씩 줄여가는 방식이다.따라서 배열의 크기가 커져도 탐색 횟수가 크게 증가하지 않는다는 장점이 있다.전제 조건이진 탐색을 사용하려면 배열이 정렬되어 있어야 한다.정렬되어 있지 않은 배열이라면 먼저 정렬해야 하며, 일반적인 정렬의 시간복잡도는 O(N log N)이다.2. 기본 이진 탐색int binarySearch(int[] arr, int target) { int l = 0; int r = arr.length - 1; while (l 가운데 값인 arr[mid]와 target을 비교하..
2026.09.10
-
백엔드 데브코스 12기 43일차
오늘은 Spring Security 학습을 마무리했다. 뒤로 갈수록 내용이 점점 어려워져서 수업을 따라가는 것도 쉽지 않았고, 나중에 직접 구현할 수 있을지 조금 걱정되기도 했다.프로젝트를 진행하면서 필요한 부분을 다시 찾아보며 익혀야겠다.... 오후에는 2차 프로젝트의 추천 알고리즘을 최종적으로 확정하고, 팀원들과 GitHub 브랜치 전략에 대해서도 이야기를 나눴다. 이제는 정말 개발을 시작할 수 있을 줄 알았는데, 예상보다 기획에 많은 시간이 들어갔다. 생각했던 것보다 개발 시작이 늦어진 만큼, 남은 기간 동안 계획한 기능을 제대로 구현할 수 있을지 조금 걱정된다. 그래도 이제 기획은 어느 정도 마무리된 만큼, 다음주부터는 본격적으로 개발을 시작해봐야겠다.
2026.09.10
-
백엔드 데브코스 12기 42일차
오늘은 오전에 Spring Security에 대해 공부했다. 수업 시간에는 최대한 열심히 따라가려고 했는데, 중간부터 난이도가 확 올라가면서 이해하기가 쉽지 않았다. 특히 UsernamePasswordAuthenticationFilter부터는 지금까지 배웠던 내용보다 훨씬 복잡하게 느껴졌다. 수업을 들을 때는 어느 정도 이해한 것 같아도, 막상 혼자 다시 정리하려고 하니 어디서부터 어떻게 정리해야 할지 조금 걱정된다. 복습하면서 흐름을 다시 잡아봐야겠다. 오후에는 다시 팀원들과 2차 프로젝트 기획에 대해 이야기를 나눴다. 다음 주 월요일까지 제출해야 하는 기획서는 거의 마무리했고, 이후에는 기능을 한 번 더 정리해보기로 했다. 그런데 구현하기로 했던 추천 기능의 알고리즘을 어떻게 구성할지 생각하다가 또 ..
2026.09.08
-
백엔드 데브코스 12기 41일차
오늘은 JWT(JSON Web Token)를 학습했다. 수업을 따라가면서 개념을 이해하는 데에는 크게 어렵지 않았지만, 직접 처음부터 구현한다고 생각하면 아직은 많이 헤맬 것 같았다. 특히 Access Token을 발급하고 검증하는 과정과 기존 API Key 인증 방식과의 차이를 이해하는 데 집중했다. 오후에는 2차 프로젝트에서 구현할 기능을 정리했다. 기능만 정리했는데도 약 3시간이 지나갔고, 이후 ERD를 만들고 팀원들과 확인하는 데 또 1시간 정도가 걸렸다. 생각보다 별로 한 게 없는 것 같은데 시간이 빠르게 지나가서 당황스러웠다.이번에 프로젝트 기획을 직접 해보면서 기획 단계가 생각보다 많은 시간과 고민이 필요한 작업이라는 것을 느꼈다. 단순히 기능을 나열하는 것뿐만 아니라, 실제로 필요한 기능인..
2026.09.08