최신 글
SOLID
클린코드
2025.11.19 17:14
이 글은 'Readable Code: 읽기 좋은 코드를 작성하는 사고법' 이라는 강의를 보고 정리하였다. Readable Code: 읽기 좋은 코드를 작성하는 사고법| 박우빈 - 인프런 강의현재 평점 4.9점 수강생 1,506명인 강의를 만나보세요. 이 강의를 통해 클린 코드 원칙에 대한 깊은 이해를 하고, 객체 지향 사고 방식에 입각한 깔끔한 코드를 작성할 수 있게 됩니다. 클린 코드와www.inflearn.com1. SRP (Single Responsibility Principle) - 단일 책임 원칙하나의 클래스는 하나의 책임만 갖는다.하나의 클래스는 단 한가지의 변경 이유(=책임)만을 가져야 한다.객체가 가진 공개 메서드, 필드, 상수 등은 해당 객체의 단일 책임에 의해서만 변경되는가?관심사의 분..
백준 20922번 : 겹치는 건 싫어 - 실버1
투 포인터
2025.11.03 15:39
✅ 문제https://www.acmicpc.net/problem/20922✅ 분류투포인터 ✅ 회고투포인터 패턴을 평소에 잘 기억하자 ✅ 풀이import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.par..
백준 15903번 : 카드 합체 놀이 - 실버 1
백준 15903번 : 카드 합체 놀이 - 실버 1
그리디
2025.10.29 11:24
✅ 문제https://www.acmicpc.net/problem/15903✅ 분류그리디 알고리즘우선순위큐 활용✅ 공부한 내용int vs long 범위 차이int: -2,147,483,648 ~ 2,147,483,647 (약 -21억 ~ 21억)long: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (약 -922경 ~ 922경) 카드 개수 n: 최대 1,000개초기 카드 값: 최대 1,000,000합체 연산 m: 최대 15,000번 최종 result (모든 카드의 합)는:최악의 경우 수십억, 수백억을 넘어감int 범위(21억)를 초과하면 오버플로우 발생음수로 바뀌거나 이상한 값이 나옴 최악의 경우 = (최대 입력값) × (연산 횟수) × (카드 개수)..
[Backtracking] 백준 1987번 : 알파벳
[Backtracking] 백준 1987번 : 알파벳
Backtracking
2025.09.25 00:39
https://www.acmicpc.net/problem/1987🔑 풀이import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;// 백트래킹public class Main { private static boolean[] used; private static int R, C; private static int answer; private static class Node { int r, c; public Node(int r, int c) { this.r = r; this.c = c; } }..
[DFS] 같은 부류 찾기 유형 정리
[DFS] 같은 부류 찾기 유형 정리
알고리즘
2025.08.19 10:55
이 글은 인프런 문과생도 이해하는 DFS 알고리즘!-입문편 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.
인기 글
스프링 AI : 2. 프로젝트 생성 및 OpenAI 의존성
Spring2025.08.02 15:19스프링 AI : 2. 프로젝트 생성 및 OpenAI 의존성

이 글은 유튜브 개발자 유미 영상을 바탕으로 개인적인 정리를 위해 작성한 글입니다.https://www.youtube.com/watch?v=-g6goXtCilM&list=PLJkjrxxiBSFCgcsP_pzuntmqC3AlTMWFx스프링 AI : OpenAI스프링 AI 의존성들을 활용하기 위한 스프링 부트 프로젝트를 생성한다. 첫번째 의존성 활용은 OpenAI이다.스프링부트 기반의 웹 서비스를 구축하며, 그 웹 서비스에서 OpenAI의 서비스가 필요한 경우,기존에 RestTemplate, WebClient와 같은 API 호출 클라이언트를 통해 모든 과정을 작성해야했다. 하지만 OpenAI 의존성만 사용하면 위 과정들을 추상화하여 사용할 수 있다. OpenAI 클라이언트 등록OpenAI API를 활용하기 ..

클린코드2025.11.19 17:14SOLID

이 글은 'Readable Code: 읽기 좋은 코드를 작성하는 사고법' 이라는 강의를 보고 정리하였다. Readable Code: 읽기 좋은 코드를 작성하는 사고법| 박우빈 - 인프런 강의현재 평점 4.9점 수강생 1,506명인 강의를 만나보세요. 이 강의를 통해 클린 코드 원칙에 대한 깊은 이해를 하고, 객체 지향 사고 방식에 입각한 깔끔한 코드를 작성할 수 있게 됩니다. 클린 코드와www.inflearn.com1. SRP (Single Responsibility Principle) - 단일 책임 원칙하나의 클래스는 하나의 책임만 갖는다.하나의 클래스는 단 한가지의 변경 이유(=책임)만을 가져야 한다.객체가 가진 공개 메서드, 필드, 상수 등은 해당 객체의 단일 책임에 의해서만 변경되는가?관심사의 분..

[DFS] 백준 11724번 : 연결 요소의 개수 - Java
BFS & DFS2025.05.21 00:53[DFS] 백준 11724번 : 연결 요소의 개수 - Java

https://www.acmicpc.net/problem/2606이번 문제는 위의 문제와 거의 같다. (풀이 참고 : https://kimjunhyun.tistory.com/134) ✅ 문제https://www.acmicpc.net/problem/11724 접근방법1. 연결된 요소의 개수 -> DFS / BFS2. 서로 연결되었다는 정보를 어떻게 하나의 자료구조로 통합할까?3. 이미 방문한 지점을 다시 방문하지 않으려면 어떤 자료구조를 사용해야할까?4. 어디에서 DFS를 시작할 것인가? 🔑 풀이import java.io.*;import java.util.*;// DFSpublic class Main { final static int MAX = 1000 + 10; // N이 가질 수 있는 최댓값 ..

[중간발표] B2B2C SaaS 대기열 서비스
스프링심화1기2024.10.11 00:30[중간발표] B2B2C SaaS 대기열 서비스

중간발표 자료  Monorepo를 통해 멀티모듈 구조를 채택했고, 루트 프로젝트에서 각각의 서브 프로젝트를 관리하고versions.properties를 통해 여러 서버에서 사용하는 JWT 같은 의존성의 버전을 통합관리했다.브랜치 전략으로는 main-dev-hotfix-feature로 이슈를 발행한 후 해당 브랜치를 파고, PR과 코드리뷰를 통해 이슈와 브랜치를 닫는 전략을 사용했다. 또한 sprint 단위로 일정을 관리했다.이번 프로젝트에서 기획한 서비스는 B2B2C로, 서비스의 사용자는 대기열 서비스를 원하는 기업의 개발자가 될 것이며, 해당 기업은 엔드포인트 사용자에게 서비스를 제공하는 구조로 이루어져 있다.처음에 각자 개발하고 싶은 부분을 고민하다가, 개발자를 위한 서비스를 만들면 어떨까라는 의견이..

스프링 심화 1기
[중간발표] B2B2C SaaS 대기열 서비스
[중간발표] B2B2C SaaS 대기열 서비스
스프링심화1기
2024.10.11 00:30
중간발표 자료  Monorepo를 통해 멀티모듈 구조를 채택했고, 루트 프로젝트에서 각각의 서브 프로젝트를 관리하고versions.properties를 통해 여러 서버에서 사용하는 JWT 같은 의존성의 버전을 통합관리했다.브랜치 전략으로는 main-dev-hotfix-feature로 이슈를 발행한 후 해당 브랜치를 파고, PR과 코드리뷰를 통해 이슈와 브랜치를 닫는 전략을 사용했다. 또한 sprint 단위로 일정을 관리했다.이번 프로젝트에서 기획한 서비스는 B2B2C로, 서비스의 사용자는 대기열 서비스를 원하는 기업의 개발자가 될 것이며, 해당 기업은 엔드포인트 사용자에게 서비스를 제공하는 구조로 이루어져 있다.처음에 각자 개발하고 싶은 부분을 고민하다가, 개발자를 위한 서비스를 만들면 어떨까라는 의견이..
Chapter 5. 팀 프로젝트 2주차 WIL
스프링심화1기
2024.10.07 14:36
Weekly I Learned 2주차 간단 요약- 프로젝트 주제 선정 후 설계 과정 이번 프로젝트에서 Kafka 도입을 통해서 최대한 안정성 있게 데이터처리를 하고자 한다.구현 과정에서 높은 러닝 커브가 있고 이슈가 매번 생길 때 로깅에 대한 전략이 필요한데 이런 경우를 대비해서 이벤트 소싱 패턴을 전략을 사용하려 한다. 이벤트 소싱 패턴 (Event Sourcing Pattern) 이란?해당 패턴의 전략의 기본은 데이터를 저장하는 방법에 대한 정의이다.일반적으로 우리는 데이터를 저장할 때, 최종적인 데이터 값만 저장한다. 하지만 이벤트 소싱 패턴은 해당 과정 속 모든 순간의 이벤트를 저장하는 거라고 생각하면 쉽다!어플리케이션의 모든 상태 변화를 순서에 따라 이벤트로 보관한다.일반유저요청(주문)요청(추가..
Domain Driven Design (DDD)
Domain Driven Design (DDD)
스프링심화1기
2024.09.09 11:03
2024.09.05(금) 특강 정리 1. DDD의 개념과 등장 배경소프트웨어를 설계할 때 고객의 요구사항을 정확히 이해하는 것이 중요하다.요구사항을 잘못 이해하면 잘못된 기능을 만들고 수정하는 것도 어렵다. 그럼 이런 문제는 왜 발생할까?과거에는 주로 기술 중심의 개발 방법론이 사용되었기 때문이다.이러한 방법론은 기술적 요구사항을 중점적으로 다루지만,비즈니스 측면에서 발생하는 다양한 요구사항을 효과적으로 반영하기에는 한계가 있었다. 특히, 비즈니스 전문가와 개발자 간의 소통이 원활하지 않으면, 최종 소프트에어가 비즈니스의 실제 요구를 충족시키지 못할 수 있었다.이러한 문제점들을 해결하기 위해 나온 설계가 도메인 주도 설계(Domain Driven Design)이다. '도메인'이란 소프트웨어로 해결하려는 ..
회고
image