-
[프로그래머스 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
-
백엔드 데브코스 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
-
[Spring] JWT 구현하기 | Access Token 발급부터 인증 처리까지
앞에서 JWT의 개념과 Access Token, Refresh Token의 차이를 알아봤다.이번에는 Spring에서 JWT를 이용해 실제 인증을 구현하는 과정을 정리했다.전체적인 흐름은 다음과 같다.로그인 ↓아이디·비밀번호 확인 ↓Access Token 생성 ↓Cookie에 Access Token 저장 ↓인증이 필요한 API 요청 ↓Cookie에서 Access Token 확인 ↓JWT 검증 ↓Payload에서 회원 정보 확인 ↓인증 완료1. JWT 라이브러리 사용하기JWT를 생성하고 검증하기 위해 jjwt 라이브러리를 사용할 수 있다.implementation("io.jsonwebtoken:jjwt-api:...")implementation("io.jsonwebtoken:jjwt-impl:...")imp..
2026.09.08
-
[Spring] JWT란? Access Token과 Refresh Token 이해하기
1. JWT란?JWT(JSON Web Token)는 JSON 형태의 정보를 안전하게 전달하기 위한 토큰 형식이다.기존에 사용했던 API Key는 단순히 무작위 값을 이용해 사용자를 식별했다.반면 JWT는 토큰 내부에 필요한 정보를 담을 수 있고, 서명(Signature)을 이용해 토큰의 위변조 여부를 확인할 수 있다.예를 들어 다음과 같은 정보를 JWT에 담을 수 있다.{ "id": 1, "username": "user2"}이러한 정보를 Claims 또는 Payload라고 한다.JWT는 대략 다음과 같은 구조로 구성된다.Header.Payload.SignatureSignature는 토큰의 내용과 서버가 가진 Secret Key를 이용해 만들어진다.따라서 서버는 Secret Key를 이용해 해당..
2026.09.08
-
백엔드 데브코스 12기 40일차
오늘은 개인 사정으로 오전 수업에는 참여하지 않고 오후부터 팀원들과 2차 프로젝트 아이디어를 결정하고 기획서를 작성하는 시간을 가졌다.처음에는 팀원분이 제안해주신 아이디어와 비슷한 사이트가 거의 없는 줄 알았는데, 직접 찾아보니 생각보다 유사한 서비스가 많아서 조금 당황했다. 그래도 기존 서비스와 완전히 똑같이 만드는 것보다는 우리만의 기능을 추가해서 차별화된 서비스로 만들어보기로 했다. 처음에는 구현 자체는 크게 어렵지 않을 것이라고 생각했다. 하지만 막상 기획서를 작성해보니 어떤 기능을 실제로 구현할 것인지 명확하게 정해지지 않은 부분이 많았고, 기능을 구체화하지 않은 상태에서는 기획서를 계속 작성하기도 어려웠다. 이 상태로 기획서를 억지로 작성하는 것은 의미가 없다고 생각해서, 주말 동안 각자 담당..
2026.09.04
-
[React] localStorage로 브라우저에 데이터 저장하기
웹 애플리케이션에서는 브라우저에 데이터를 저장해야 하는 경우가 있다.이때 사용할 수 있는 방법 중 하나가 localStorage이다.localStorage는 브라우저에 데이터를 저장하는 Web Storage API로, 페이지를 새로고침하거나 브라우저를 종료해도 저장한 데이터가 유지되는 특징이 있다.1. localStorage에 데이터 저장하기localStorage.setItem()을 사용하면 데이터를 저장할 수 있다.localStorage.setItem("name", "홍길동");첫 번째 인자는 저장할 데이터의 이름이고, 두 번째 인자는 저장할 값이다.저장된 데이터는 브라우저의 개발자 도구에서 확인할 수 있다.개발자 도구→ Application→ Local Storage2. 저장된 데이터 가져오기loca..
2026.09.04
-
[Spring] Cookie를 이용한 인증 처리
Cookie를 이용해 인증 정보를 관리할 때 Spring에서는 HttpServletRequest와 HttpServletResponse를 사용할 수 있다.HttpServletRequest를 이용하면 클라이언트가 보낸 Header와 Cookie를 확인할 수 있고, HttpServletResponse를 이용하면 서버의 응답에 Cookie를 추가할 수 있다.1. HttpServletRequest와 HttpServletResponseController에서 두 객체를 주입받아 사용할 수 있다.private final HttpServletRequest request;private final HttpServletResponse response;객체역할HttpServletRequest클라이언트의 요청 정보 확인HttpS..
2026.09.04