#Java 44

함수형 프로그래밍이란 무엇일까
목디스크랑 대상포진은 조금 힘드네..?

Java Virtual Thread vs Coroutine
Java 21의 가상스레드와 코루틴 중에 뭐가 더 좋을까?

왜 나의 @AuthenticationPrincipal은 동작하지 않을까
Spring Security 설정 문제로 엿본 내부 동작 원리

현업에서 SOLID 지키면서 개발하기
생산성과 가독성의 협의점 찾기

동시성과 순서보장을 둘 다 잡을 순 없을까?
하나만 잡기도 어려운데 두개는 어떻게 잡지

eGov Framework의 Validation 시스템 이해하기
신입 연수 마지막주차를 보내며 생긴 의문점 해소

소프티어 7726: 나무 섭지
자율 프로젝트 기간에 준비하는 코딩테스트

백준 1194: 달이 차오른다, 가자.
알고리즘 재활훈련 3주차

백준 2922: 즐거운 단어
알고리즘 재활 훈련 2일차

백준 21942: 부품 대여장
공통 프로젝트 이후 다시 시작한 알고리즘 재활 훈련

SSAFY 11기 공통 프로젝트 : 트러블 슈팅
공통 프로젝트를 진행하면서 생긴 오류를 정리해보자

Stream을 사용할 때 NullPointerException을 피하는 방법
Spring 프로젝트 도중 생긴 오류의 트러블 슈팅

백준 16946 : 벽 부수고 이동하기 4
문제 링크문제의 조건을 보면 간단한 BFS같이 보이지만, 실제로 구현하면 시간초과가 난다.안에서 문제의 조건을 미리 계산하고 중복을 제거하는 자료구조를 사용해야만 시간초과를 해결 할 수 있는 문제였다!BFSO(N^2)해결 로직은 생각했지만, 중복 제거를 구현하는데 H

백준 7579 : 앱
문제 링크 DP로 결과값을 배낭문제처럼 분할해서 접근했다!Memory의 범위가 매우 넓고, 문제 메모리 조건이 128MB로 작기 때문에, cost를 기준으로 잡고 DP 공식을 만들었다!DPO(N)그리디 접근방식에서 틀린걸 깨닫고 DP 방식으로 다시 접근했다없을 것 같다

백준 15681 : 트리와 쿼리
문제 링크인접 리스트를 순회하는 방식만 구현하면 된다고 생각해서, DFS나 BFS로 접근했다DFSO(V+E)처음에는 메모리를 고려하지 않고 BFS를 사용했다가 메모리 초과가 난 이후에 DFS로 바꿨다!DP도 가능할 것 같다!

4week_spring : 3주차 리뷰
1, 2주차에 기능 구현 못한 부분 완성하기OAuth2 로그인 및 소셜 로그인 연동 (원하는 소셜 로그인 기능 하나 + OAuth2를 사용한 사용자 인증 구현)파일 업로드 및 다운로드 기능 구현 (Spring Boot의 MultipartFile 사용)구현 성공 : 카

4week_spring : 3주차 트러블 슈팅
카카오 로그인 인가코드 발급후, 토큰 요청시 401 ERROR 발생공식문서를 찾아보니 클라이언트 시크릿을 적용하고, 시크릿 코드를 포함하지 않으면 나는 오류라는 것을 발견 하지만 나는 시크릿 코드를 활성화 하지 않음이전에는 Json 형식으로 데이터를 보내야 했지만, 최

백준 2239 : 스도쿠
문제 링크처음엔 DFS 재귀 방식으로 접근했는데 계속 값 초기화 부분에서 오류가 났다난이도를 보고 쉬운줄 알고 접근했는데, 시간안에 풀지 못했다...결국 이번 문제는 정답을 참고해서 풀었고, 다음에 다시 한번 풀기로 했다.백트래킹최악 O(9^N^2)추후 다시 풀어볼 예

4week_spring : 2주차 리뷰
세션 인증 → 토큰 인증(JWT) 변경 및 Refresh Token 적용 + Spring SecurityResponseEntity 이용해서 응답 데이터 및 Http Status Code 까지 적절한 응답 할 수 있도록 변경@ExceptionHandler 사용해서 전역

4week_spring : 2주차 트러블 슈팅
Jwt 토큰을 요청 헤더에 포함시키고, 이를 통해 유저네임을 찾을 때, 이름이 아닌 ID로 찾는 문제 발생ID로 찾는 부분을 이름으로 찾도록 변경오류 없이 정상 작동완료코드의 일관성에 대한 중요성을 학습했다!오류 코드의 해석도 중요하다는걸 알게되었다.DTO를 적용했을

백준 2473: 세 용액
문제 링크어제 풀었던 투 포인터의 응용 문제로,N의 범위를 보니 포인터를 하나 더 늘리기만 하면 되겠다고 생각했다!투 포인터O(N^2)없다!없을 것 같다!

백준 2467: 용액
문제 링크이미 정렬이 되어있는 용액의 최소 절댓값을 구하는 문제로, 투 포인터를 사용하면 되겠다고 생각했다!투 포인터O(N)처음에 초기값을 MAXVALUE로 안해줘서 틀렸는데 바로 고쳐서 맞았다!없을 것 같다

백준 1799: 비숍
문제 링크처음에는 제한시간이 10초 + 모든 공간을 다 봐야한다고 생각해서 DFS로 접근했다.또한 비숍은 바로 옆의 칸 체스판의 흰색과 검은색칸은 가지 못하므로 2가지 경우로 나누어서DFS를 돌리면 되겠다고 생각했다!깊이 우선 탐색 DFSO(N^2)2가지 경우로 처음에

백준 20040: 사이클 게임
문제 링크사이클 유무를 판단해야하므로 Union Find로 그룹화가 되었는지 확인하면 된다! 유니온 파인드 Union FindO(N+M) V+E한번에 풀었다!없을 것 같다!

백준 2623: 음악프로그램
문제 링크주어진 좌표 가수 연결 정보의 순서를 검사해서 출력하면 되므로 그래프의 순서를 탐색하는 알고리즘인 위상 정렬을 사용했다!위상정렬O(V+E)간만에 한번에 맞아서 좋다!없을 것 같다!

백준 1202: 보석 도둑
문제 링크먼저 가장 많이 가져갈 수 있는 가격을 구해야하고, 조건에 맞추어 가방 무게를 검사해야하는 문제다.따라서 처음에는 가방을 크기순으로 내림차순 정렬, 보석은 무게순으로 내림차순 정렬한 이후들어갈 수 있는 최대한의 가치를 가진 보석을 pq 우선순위큐로 골라서 합산

백준 1647: 도시 분할 계획
문제 링크그룹화를보고 일반적인 MST에 마지막 한단계만 더 생각하면 될 것 같았다!MST 최소신장트리O(NlogN)Union할때 find 되지 않은 값을 합쳐줘서 틀리는 문제가 있었다..바로 수정해서 통과했다!없을 것 같다!

백준 1562: 계단수
문제 링크이 문제는 풀이를 떠올리지 못해서 정답을 참고했다...처음에 DP유형의 문제인건 눈치챘지만, 어떤식으로 로직을 짜야할지 감이 오지 않았다.풀이를 공부하던 도중에, 비트마스크 알고리즘에 대해서 알게되었다.다행히 어느정도 이해하게 되어서 다음에 한번 더 풀어보기로

백준 14938: 서강그라운드
문제 링크기본 최단경로라서 다익스트라를 떠올렸다.근데 이미 BFS로 구현중에 떠올라서 로직만 조금 수정했다..다익스트라 O(V+E)처음에 문제를 잘못읽어서 갱신 방법을 잘못 설정했었다...없을 것 같다!

백준 2096: 내려가기
문제 링크처음에는 일반적인 브루트포스인줄 알고 DFS, 또는 BFS를 사용하려 했지만입력 범위와 메모리 조건을 보니 일반적인 완전탐색으로는 안될 것 같았다.따라서 DP로 접근하기로 했다!DP 동적 프로그래밍O(N)없다!어떻게 로직을 잘 자면 메모리를 더 줄일 수 있을거

4week_spring: 1주차 리뷰
게시글 작성제목내용게시글 수정제목내용게시글 삭제게시글 조회제목, 작성자, 내용, 조회 수, 추천 수, 비 추천 수, 댓글 수, 작성 시간댓글 목록작성자, 내용, 작성 시간, 추천 수, 비 추천 수대댓글게시글 목록 조회제목, 작성자, 조회 수, 추천 수, 작성 시간게시글

4week_spring : 1주차 트러블 슈팅
시큐리티를 사용한 로그인을 구현할때, SecurityConfig를 설정해줘도, 로그인을 실패할시, Default Url 로 요청을 계속해서 보내는 문제로그인이 실패할때, auth/loginForm로 이동하는 것을 보고 failureUrl 설정하지만 이래도 해결되지 않았

미니프로젝트 : 4week_spring
6월은 싸피 11기의 1학기 방학기간이다.중간에 잡페어 기간으로 자소서, 면접 준비를 도와주지만...대부분 2학기에 필요한 프레임워크 및 언어를 공부해 프로젝트에 대비한다.그래서 나도 아는 형과 같이 미니 기능구현 프로젝트를 해보기로 했다!한 주차마다 월요일에 요구사항

백준 1043: 거짓말
문제 링크파티의 수와 거짓말을 판단해야하므로, 그룹화 Union Find 알고리즘을 사용하면 되겠다고 생각했다!유니온 파인드 Union FindO(NlogN)처음에 아무생각없이 find값들을 서로 비교하지 않고, 초기값과 find값을 비교해서 틀리는 문제가 있었다.그룹

백준 1753: 최단 경로
문제 링크일반적인 최단 경로 문제이므로 다익스트라를 사용했다!다익스트라 DijkstraO(V+E)pq에 넣을때 최적화된 값을 넣지 않아서 시간초과가 나는 오류가 있었다...고쳐서 바로 해결했다!이미 pq를 사용해서 없을 것 같다!

백준 15311: 약 팔기
문제 링크100만 까지의 수를 특정 숫자의 합으로 나타내는 문제이다.처음에는 범위가 2000까지여서 1부터 2000까지 전부 더해봤는데 100만이 넘었다.그래서 1부터 차례대로 넣고 뽑는 식으로 구현할려 했는데, 연속된 범위가 발목을 잡았다..100만까지의 수를 표현하

백준 5430: AC
문제 링크조건에 맞추어 문자열을 파싱해서 출력한다!구현O(N)처음에는 아무생각없이 일반 구현인 줄 알고 회전 명령이 들어오는대로 처리를 했더니 시간초과가 났다...일괄적으로 명령을 받아 범위만 확정지은 후에 파싱하는 방법으로 해결했다!또한 O(N)의 시간 복잡도를 유지

백준 1884: 고속도로
문제 링크 created : 2024-06-07 문제 떠올린 접근 방식, 과정 시작점이 정해진 최단경로이므로 다익스트라를 사용한다! 하지만 조건이 두개 이상이기 때문에 한가지 기준에 따른 다익스트라를 돌린후, 조건에 맞추어 순회해서 정답을 구한다. 알고리즘과 판

백준 1938: 통나무 옮기기
문제 링크최단경로이므로 BFS에 기본 로직들에 맞춰 조건을 구현했다.BFS최단경로니까!O(N^2)방문처리를 한 조건에 안해줘서 메모리 초과가 났었다.바로 추가해줘서 해결했다!더 깔끔하게 리팩토링은 가능할 것 같다..

해시 테이블이란?
해시 테이블 Key, Value로 데이터를 저장하는 자료 구조 중 하나로 데이터를 빠르게 검색할 수 있는 자료구조를 말한다! 검색속도가 빠른 이유는, 내부적으로 배열을 사용해서 데이터를 저장하기 때문이다. 각각의 Key 값에 해시 함수를 적용해 배열의 고유한 ind

백준 26606: 이게 게임이냐?
문제 링크기본 로직은 BFS로 pq에 카드 게임 진행상황과 현재 카드 소비수를 같이 넣어서, 카드 소비수를 내림차순 기준으로 뽑아내고, 카드를 넣을 수 있는 모든 곳의 수를 탐색해서 게임 성공 유무를 판단한다.BFSO(NlogN)처음에 구현할 때는 손패를 고려안해서

백준 1914: 하노이 탑
문제 링크N개의 하노이탑을 옮기려면 N-1개의 탑을 빈 공간에 옮긴후, 제일 큰 탑을 목적지로 이동 후, 다시 빈공간에서 목적지로 N-1개를 옮겨야한다.이는 N 개의 하노이 탑을 옮기기 위해서 N-1개의 하노이 탑을 옮기는걸 총 2번 반복해야된다는 소리고, 이는 재귀로

백준 20926: 얼음 미로
문제 링크최단경로이므로 기본적으로 BFS로 조건에 맞게 탐색한 후, 시간 복잡도 최적화를 위해 check 배열을 사용해 최소값을 갱신한다.다익스트라(Dijkstra)우선순위 큐로 최적화 시켰으므로 O(NlogN)해당 부분을 check 배열로 잘못써서 계속 시간초과가 났

백준 26609: 험난한 등굣길
문제 링크문제의 범위가 3000이고, 해당 조건의 교통체중을 전부다 BFS로 일일히 돌리면 시간초과가 난다. 따라서 교통체중의 경계값만 표시하고 학교를 가는 최소값은 다익스트라를 사용한다.다익스트라구현우선순위큐로 최적화를 시키지 않았기 때문에O(N^2)일반 BFS로 해