2023년 8월에 KDT 내일배움 캠프가 열리며 지원을 하였다.나는 백엔드 개발자를 목표로 삼고 내가 개발자가 되는 과정과 더 나아가 좋은 개발자가 되는 과정을 담아 보고자 이 글을 쓰게 되었다.내일배움 캠프 사전 캠프 기간은 8월 28일~9월 27일까지 이며본캠프 기
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
개발자가 되기위한 오늘의 일기💻
교차판매/물건배치 등에 이용되는 분석 기법기저귀를 사는 고객은 맥주를 동시에 구매한다는 연관규칙 발견 → 인접한 진열대에 위치시켜 매출 증대를 꾀할 수 있다.고객의 과거 거래 구매 패턴을 분석하여 고객이 구매하지 않은 상품 추천상품을 구매할 때 유사한 상품을 구매한 고
ADsP 이제 강의는 모두 끝났고 복습하며 모의고사를 많이 풀어보는 방법 밖에 없을것 같아서 모의고사를 찾아보고 풀고있다!!! 다음 데이터에 대한 설명으로 가장 적절하지 않은 것은? 추론, 예측, 전망, 추정을 위한 근거(basis)로 기능하는 특성을 갖는다.
ADsP 이제는 강의도 끝나서 혼자해야하는것은 문제 풀기 뿐이 없으니 세세하게 적지않을 예정이다!!! 하지만 하루에 모의고사 1회차씩은 풀것이다!!!!!!!!!!!! 내일 배움 캠프 이제 내일배움캠프에서 새로운 강의 SQL을 제공해주기로 했기에 그것을 해볼것이다.
모의고사를 2회차 풀었다 여전히 어렵고 힘들지만 그래도 조금 더 풀다보면 합격이 가능하지 않을까 한다.제공해주는 강의를 들을 예정이다 목표는 1주차 완료!\*(문서 전체 라는 뜻)// 뜻 Orders에 있는 payment_method 에 kakaopay만 뽑아줘!!!!
ADsP 모의고사 1회차 풀이와 정답확인....아직 부족하다 허허허허이러다 답을 그냥 외우는것은 아니련지 싶다. 내일 배움 캠프 어제 완료한 SQL 1주차에 이어 2주차를 들어볼것이다. SQL 오늘 할것은 통계:최대 최소 평균 갯수 등을 구해볼것이다 그룹에 관하여
오늘도 여전히 반복적인 학습을 위해 모의고사 1회차를 풀었다.2주차 강의 완료에 이어 3주차 강의를 시작해 보려한다!!!!!!!!엄청 많이 사용되는 것!!!!! 대신 무언가의 기준이 되는 것(key값)이 필요하다.Join의 종류로는여기서 A와 B는 각각의 테이블을 의미
오늘은 왜인지 문제가 술술 풀려서 2회차를 풀었다. 아침부터 일찍 일어나 한것이 도움이 된듯하다.오늘은 어제 들은 SQL 3주차에 이어 4주차로 마무리 해볼 생각이다!Subquery(서브쿼리)의 사용 방법을 배워 볼것이고실전에서 유용한 SQL 문법들에 대해서도 배울것이
오늘도 다시 시작되는 주간!!!!!!모의고사를 풀어보아요!!!!!지난주에 내일배움 캠프에서 제공되는 강의는 다 들어서이번주중에 한번 다시 훑듯이 들어볼 예정이고HTML을 당장 본캠프 들어가면 써야한데서 처음부터 복습을 하며자바에 힘을 줘서 집중해보려한다!!!!지난주 얄
ADsP 오늘도 모의고사 풀어 보자구!!!!!!!!!!!!!1 내일 배움 캠프 스파르타 코딩 클럽에서 제공되는 코딩테스트 무료 강의가 있기에 시청해볼것이다. 슬랙으로 하루에 두문제씩 코드 문제를 푸는것이 있어 들고왔다.!!! 1번 문제 : 몫 구하기 `문제 설명 정
모의고사 늘 모의고사 지겹지만 그게 답이니까 모의고사...오늘은 슬랙으로 날라오는 코딩테스트(알고리즘)을 풀고 나머지로 자바와 CSS를 할것이다문제 설명정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하
모의고사 풀기!오늘도 제공해주는 알고리즘 문제를 풀것이다.문제 설명문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.제한사항1 ≤ my_string의 길이 ≤ 1,000문제
에헤이 조졌네 이거~
개발이란 무엇인가...어디에나 있고 어디에도 없구나...💻
팀프로젝트 가보자고!!!!!!!1
개발자!!!되고 싶다!!!!!!!!
쉽지않아 숙제.....
아무래도 좀 쉬어야할듯한데,,,,?아닌가?
협업이란 무엇인가에 대한 고촬이 필요할떄
왐마?
추운데....날씨가 슬슬???
왐마야 프로젝트 끝났어잉
프로젝트 마무리와 발표
23.10.11 미니프로젝트(팀원 소개 페이지)_KPT회고💻
집중좀 해!!!!!!집중력 흐려지지마!!!!!!!!!
WIL 10월 9일~11일 : 미니 프로젝트 마무리와 발표 10월 12일~13일 : Java 언어 교육
한주의 시작이다!!!!!!화이팅!!!!!!!!!
어제 왜 안올렸니;...?왜 임시로 가있니???
개인과제의 시작(키오스크)
망할 .gitinore 은 처음인데 날 화나게 하는구나?
코드와의 싸움...졌다....오늘은 졌지만 내일은 져주는거야....절대 내가 잘못해서 지는거아님 내일부터눈...
10월 3주차의 WIL 한발 더 다가갔을까???
해결해쓰 해결해쓰 2번을 해결했으 그리고는 오는 현타와 철학적 마음가짐...
자~협업을 시작해볼까요????
팀 프로젝트 1차 완성(제출은 아마 가능...)🫡💻
거북이가 거북거북🐢API쉽지않네...
아장아장 걸어가는 코린이....또륵...
10월 4주차 WIL
23.10.30 자바 언어 팀 프로젝트 KPT
월요일은 월요병,....월요병은 허리가 아픈병~!
Spring 시작!!!! 주특기!!!달려보자구!!!!
그래서 Spring은 뭔데...?
왜 써두고 임시글에 있니 너는...?
스프링 개인과제 언제부터 CRUD가 기초였는가...
Spring 너 좀 치네...?아프다?
JPA?Entity? 몰루....
스프링 빈(Spring Bean)이란 그런것인가...?
스프링 시큐리티는 시큐리티 시큐리티는 보안 보안은 안전 안전하자...내 멘탈...
RestTemplate && Entity관계
지연로딩....영속성 가보자고 레쯔고!🥱
11월 2주차 WIL
멘탈이 파사삭해서 철학자가 되어버렸다,....
@SpringBootTest~
관심사 분리
스프링 시큐리티
과제!!과제가 된다구!!!!!!!!!
멘탈이 나가서 처음부터 해보는 스프링의 회고
JWT로 로그인과 회원가입 구현하기
스프링에서 리프레시 토큰 사용하기
추상 클래스와 인터페이스의 차이점
스프링에서의 예외 처리
런타임에러
스프링에서의 예외 처리, 추상 클래스와 인터페이스의 차이점, 리프레시 토큰 사용, JWT로 로그인 회원가입 구현, 런타임 에러에 대해
프론트엔드와 백엔드 연결
스프링 숙련 주차 팀프로젝트 KPT 2명이지요....
REST API를 활용한 CRUD 작업
Cron 표현식의 이해와 활용
OAuth 2.0 인증 흐름
OAuth 2.0 보안 메커니즘
OAuth 2.0 보안 메커니즘OAuth 2.0 인증 흐름 Cron 표현식의 이해와 활용REST API를 활용한 CRUD 작업 프론트엔드와 백엔드 연결
Aspect-Oriented Programming(AOP)
레코드 클래스
레코드 클래스와 상속의 문제점
레코드 클래스와 빌더 패턴, 성능 비교&&
공원 산책
레코드 클래스와 리플렉션, JSON 변환
스프링 심화 주차 팀프로젝트 KPT
12월 11일-트랜잭션 성능 최적화
Aspect-Oriented Programming(AOP), 레코드 클래스, 상속의 문제점, 빌더 패턴, 리플렉션, JSON 변환
트랜잭션 경계 설정
클린 코드와 코드 리팩토링
JPA 테이블 매핑과 필드 타입 매핑
지역성(Locality)에 대한 이해
비선형 자료구조
JPQL
CI/CD
JPA와 ORM의 이해
스케쥴링과 프로세서의 상태
RDB(관계형 데이터베이스)와 NoSQL(Not Only SQL)
프로세스(Process)
Key (키)
컨텍스트 스위칭
@Autowired와 Mockito의 @InjectMocks의 차이점
DDProject (Development Diary)
Schema
정규화
Mapper
RDBMS 클러스터링 및 레플리케이션 클러스터링: RDBMS에서 클러스터링은 데이터베이스 서버들을 서로 연결해 하나의 논리적 서버로 운영한다. 이를 통해 고가용성, 부하 분산, 장애 복구 등의 이점을 얻는다. 레플리케이션: 데이터의 일관성을 유지하기 위해 하나의 데이터베이스 서버(주 서버)에서 다른 서버(보조 서버)로 데이터를 복사하는 과정이다. 주 서버...
가상 머신(VM) 기술적 세부 사항: 하이퍼바이저의 역할: VM은 Type 1(하이퍼바이저가 직접 하드웨어 위에 설치) 또는 Type 2(기존 OS 위에 설치) 하이퍼바이저에 의해 관리된다. 자원 할당: 각 VM은 일정량의 CPU, 메모리, 스토리지 등을 할당받는다. 네트워킹: VM들은 가상 네트워크 인터페이스를 통해 통신한다. 사용 예제: 개발 환경...
AsyncHttpClient
SQL Injection
Fetch vs Axios
API사용하기
루아 스크립트란?
쿼리 함수란?
CICD
리액트와 스프링 부트 연결하기
WebSocket vs Polling
AuthContext
쿠키(Cookie)와 세션(Session)
Zustand
lodash란?
HTTP와 HTTPS 차이점 HTTP 정의: 클라이언트와 서버 간의 정보를 주고받는 프로토콜이다. 특징: 암호화되지 않은 상태로 데이터를 전송한다. 이 때문에 중간자 공격에 취약하다. 적용 예: 보안이 중요하지 않은 일반적인 웹 사이트에서 사용한다. HTTPS 정의: HTTP에 보안 기능이 추가된 프로토콜이다. 특징: SSL 또는 TLS를 통해 데이터를 암...
CORS
JMeter
웹소켓
테스트 진행 어제에 이어서 테스트를 진행했는데 문제가 있었다 웹소켓 서버에 동시에 연결을 시도할 사용자 수(스레드 수)를 설정한다. 이번 테스트에서는 약 500명의 동시 사용자를 가정했다.웹소켓 서버에 연결하고, 메시지를 전송하는 요청을 설정한다. 이 과정에서, 서버로부터의 응답도 캡처했는데... 500명 정도가 되니 실패율이 크게 늘어나버렸다. 그리고 ...
진행 중이던 웹소켓 테스트에서 JMeter를 통해 생성된 대량의 트래픽이 가정의 인터넷 연결에 치명적인 부하를 주어버렸고, 결국 네트워크가 마비되는 상황에 이르렀습니다. 이는 단순히 인터넷 서비스가 불안정해지는 것을 넘어서, 실제로 모든 온라인 활동이 정지될 정도로 심각한 상태였습니다. 터져버린 네트워크,...... 이 문제를 해결하기 위한 첫 번째 단...
Java의 가비지 컬렉션
오늘은 스프링 프레임워크에서 제공하는 @Transactional 어노테이션에 대해 배웠다. 이 어노테이션은 선언적 트랜잭션 관리를 가능하게 해주며, 개발자가 트랜잭션의 경계를 명시적으로 코딩하지 않아도 스프링이 런타임에 트랜잭션을 자동으로 처리해준다. 주요 학습 포인트는 다음과 같다: 자동 롤백과 커밋: @Transactional을 사용하면 메소드가 트랜...
VPN과 프록시
제어의 역전(IoC)과 의존성 주입(DI)
Interceptor& Servlet Filter
가상화
Docker
Quick Sort vs Merge Sort
Stable Sort와 다양한 정렬 알고리즘
그래프 자료구조와 구현 방법
문제 설명 >신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. >각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한...
재귀 함수와 최적화
최소 신장 트리(MST)
Kruskal
Thread Safe
Thread-Safe 자료구조와 최적화 방법
Trie, KMP(Knuth-Morris-Pratt),Rabin-Karp
이진 탐색
Lower Bound:
그리디 알고리즘과 동적 계획법 비교 그리디 알고리즘과 동적 계획법(Dynamic Programming, DP)은 최적화 문제를 해결하기 위한 대표적인 전략들이다. 두 방법은 문제를 해결하는 접근 방식에서 근본적인 차이를 가진다. 그리디 알고리즘 정의: 그리디 알고리즘은 매 선택에서 가장 최적이라고 생각되는 것을 선택해 나가는 방식이다. 이 방식은 전...
그리디 알고리즘
프로세스 주소 공간(Process Address Space)
프로세스 주소 공간 프로그램이 실행되는 동안 운영 체제는 프로세스에 주소 공간을 할당하며, 이 공간은 크게 코드, 데이터, 힙, 스택 영역으로 구분된다. 각 영역은 프로그램의 다양한 데이터와 명령어를 저장하고 처리하는 데 특화된 역할을 한다. 초기화하지 않은 변수의 저장 위치: BSS 세그먼트 초기화되지 않은 전역 변수와 정적 변수(static var...
단기, 중기, 장기 스케줄러 상세 설명
컨텍스트 스위칭 상세 과정
컨텍스트 스위칭 상세 설명
프로세스 스케줄링
프로세스 스케줄링 알고리즘과 컨텍스트 상세 이해
뮤텍스(Mutex)와 세마포어(Semaphore)
이진 세마포어와 뮤텍스의 차이점 이진 세마포어와 뮤텍스는 모두 상호 배제를 위해 사용되지만, 몇 가지 중요한 차이점이 있다. 이진 세마포어 (Binary Semaphore) 기본 개념: 값이 0 또는 1인 세마포어로, 뮤텍스와 유사하게 작동하여 한 번에 하나의 스레드만이 공유 자원에 접근할 수 있도록 한다. 소유권: 이진 세마포어는 소유권 개념이 없어,...
Deadlock?
Deadlock
프로그램이 컴파일
IPC
Thread Safe
Race Condition
Thread Pool
캐시 메모리 및 메모리 계층성
메모리의 연속할당 방식
Thrashing이란 무엇인가?
가상 메모리
세그멘테이션과 페이징의 차이점
TLB와 MMU에 대한 이해
동기화
페이지 교체 알고리즘
파일 디스크립터
페이지 교체 알고리즘과 LRU
파일 디스크립터와 파일 시스템
동기와 비동기, 블로킹과 논블로킹 차이
쿠키와 세션의 차이
HTTP 응답 코드
HTTP 메소드와 특징
DHCP (Dynamic Host Configuration Protocol)
HTTP Methods와 관련된 개념
TCP/IP 4-Way Handshake 상세 설명
Stateless와 Connectionless에 대한 설명
라우터
로드밸런서란
서브넷 마스크
멀티플렉싱과 디멀티플렉싱
XSS (Cross-Site Scripting)
데이터베이스 Join에 대한 설명
DB Locking에 대한 설명
SQL Injection에 대한 설명
객체지향 프로그래밍 (Object-Oriented Programming, OOP)
함수형 프로그래밍과 순수 함수
Bubble Sort
Merge Sort
Insertion Sort (삽입 정렬)
Selection Sort (선택 정렬)
Binary Search (이진 탐색) 및 Segment Tree (세그먼트 트리)
Permutation 및 Combination
Understanding Key
B Tree & B+ Tree
Reflection in Java
String, StringBuilder, StringBuffer 차이
인터페이스란?
자바에서 접근 제어 지시자
클래스와 인스턴스
값 타입 vs 참조 타입
3-way Handshake와 4-way Handshake
Blocking I/O & Non-Blocking I/O
Cookie & Session
UDP (User Datagram Protocol)
트랜잭션
인덱스
Anomaly 정규화를 해야 하는 이유는 잘못된 테이블 설계로 인해 Anomaly(이상 현상)가 나타나기 때문이다. 여기서 Anomaly가 무엇인지 알아보자. Anomaly의 종류 1. 삽입 이상(Insertion Anomaly) 기본키가 {Student ID,
Kotlin 함수들
범위 지정 함수 코틀린에서 제공하는 여러 함수들 중 유용하게 사용할 수 있는 함수들이다. let() let()은 함수를 호출하는 객체를 이어지는 블록의 인자로 넘기고, 블록의 결과값을 반환한다. 사용 예 함수를 호출한 객체를 인자로 받으므로, 이를 사용하여 다른
코틀린
생성자
웹 브라우저의 주소창에 naver.com을 입력하면 어떤 일?
HTTP 동작
Context Switching
운영체제(Operating System 이하 OS)
인터럽트의 원리
컴퓨터 시스템의 동작 원리
동기화
단편화 외부 단편화 (External Fragmentation) 외부 단편화란 프로그램의 크기보다 분할의 크기가 작아서, 해당 분할이 비어있음에도 불구하고 프로그램을 적재하지 못하는 메모리 공간을 말한다. 이는 어떤 프로그램에도 배당되지 않은 빈 공간임에도 현재 상태에서 사용될 수 없는 작은 분할이다. 내부 단편화 (Internal Fragmentat...
인터럽트란
어댑터 패턴
링크드 리스트(Linked List)
컴포지션(Composition)
Java의 Object 클래스의 wait, notify, notifyAll 메서드
Java
Record
자바의 객체 생명주기
Jenkins에
제네릭
멀티스레딩
자바의 메모리 관리와 가비지 컬렉션
GIL (Global Interpreter Lock)
Cost Function
브라우저의 동작 원리
CORS
로드 밸런싱
크로스 브라우징
‘좋은 코드란 무엇인가?’
자료구조 구현
주어진 숫자들로 원하는 합 만들기 & 아라비아 숫자를 로마 숫자로 변환하기
Casting in Java (업캐스팅 & 다운캐스팅)
TIL: 대칭키 & 공개키 암호화 오늘은 정보 보안에서 중요한 역할을 하는 대칭키(Symmetric Key)와 공개키(Public Key) / 비대칭키(Asymmetric Key) 암호화에 대해 알아보자. 각 방식의 특징과 장단점을 이해하고, 이를 통해 보안 문제를 어떻게 해결할 수 있는지 살펴보겠다. 대칭키 암호화 (Symmetric Key) 대칭키...
JAVA Stream API
[Java] 고유 락 (Intrinsic Lock)과 동기화
자바(Java)에서는 문자열(String)
인증 방식 웹 서비스의 규모가 커지면서, 다양한 기능을 독립적으로 분리하고 공유하기 위해 여러 인증 방식이 등장했다. 대표적으로 API Key, OAuth2, 그리고 JWT 방식이 있다. 각 방식의 동작 원리와 장단점을 알아보자. API Key API Key는 초기의 인증 방식 중 하나로, 모듈이나 애플리케이션 간의 공유와 독립성을 보장하기 위해 사용...
Javascript와 Node.js로 Git을 통해 협업하기
리눅스 기본 명령어
폰 노이만 구조
계수 정렬 (Counting Sort) Comparison Sort와 계수 정렬 N개의 원소로 이루어진 배열을 정렬하는 경우, 이를 모두 정렬하는 가짓수는 N!이 된다. 일반적으로 Comparison Sort(비교 기반 정렬)의 시간 복잡도는 O(n log n)이다. 이는 비교를 통해 원소들을 정렬할 때, 비교하는 과정이 필수적이기 때문이다. 하지만, ...
StringBuilder와 StringBuffer의 차이 배경 & 질문 의도 Java에서 문자열 처리 시 String, StringBuilder, StringBuffer 중 어떤 것을 사용하는지가 중요하다. 이 세 가지 클래스의 차이점을 이해하려면 먼저 mutable(가변)과 immutable(불변)의 개념을 알아야 한다. 특히, 불변 객체인 Strin...
컴퓨터 시스템
OAuth
[Cpp] 얕은 복사 vs 깊은 복사 shallow copy와 deep copy가 어떻게 다른지 알아보자 얕은 복사(shallow copy) 얕은 복사는 한 객체의 모든 멤버 변수의 값을 다른 객체로 복사하는 것을 의미한다. 단순히 포인터의 주소값만 복사하며, 실제 메모리의 데이터는 복사되지 않는다. 깊은 복사(deep copy) 깊은 복사는 모든 멤...
JSON Web Tokens (JWT)
최장 증가 수열(LIS)
동적 계획법(DP)
기수 정렬(Radix Sort)
클린코드와 시큐어코딩 전문가들이 표현한 '클린코드' 한 가지를 제대로 한다. 단순하고 직접적이다. 특정 목적을 달성하는 방법은 하나만 제공한다. 중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기 이 세 가지가 비결이다. 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행하는 것. 클린코드란? 클린코드는 코드를 작성하는 의도와 목적이 명...
프로세서
PM이 갖춰야 할 필수 능력 1. 우선 순위 세우기 💡 빠른 결과물을 도출하기 위해 장애를 제거하기 일을 잘한다는 건, 최소한의 노력과 시간으로 최고의 효율성을 내는 걸 말합니다. 가장 먼저 해야 할 일은 각 작업(Task) 간의 유기적인 관계를 이해하고, 불필요한 요소를 제거하는 것입니다. 또한 유사한 것들끼리 범주화한 후 꼭 필요한 부분을 우선...
Java
Java
Java
접근 제어자(Access Modifier)
동기식
[Java] Serialization이란?
[Java] 메모리 및 성능 개선을 위한 방법 1. static을 사용한 선언 메모리와 성능을 개선하기 위해 자바에서는 static 키워드를 사용하는 것이 좋습니다. static 키워드를 사용하면, 인스턴스 변수가 아닌 클래스 변수로 선언되어 모든 객체가 공유할 수 있습니다. 이는 메모리를 절약하고, 필요한 값의 흐름을 유지하는 데 효과적입니다. 장점...
[CS] 프로세스와 스레드의 차이
스프링
Spring MVC 프레임워크
[Spring Boot] Test Code 작성의 필요성 테스트 코드를 작성해야 하는 이유 개발 단계에서 문제를 빠르게 발견할 수 있다. 코드 리팩토링이나 라이브러리 업그레이드 시 기존 기능이 잘 작동하는지 확인할 수 있다. 기능에 대한 불확실성을 줄여준다. 많은 사람들이 테스트 코드를 작성하는 일이 개발 시간을 늘린다고 생각할 수 있다. 하지만 코드...
JPA (Java Persistence API)
[Spring Data JPA] 더티 체킹 (Dirty Checking)
Spring Security - Authentication and Authorization
AWS
시스템
Dispatcher-Servlet
AOP
MyBatis란?
어노테이션
도메인이란 무엇인가?
Composite Pattern
경쟁 상태(Race Condition)
오늘의 TIL에서는 체스판에서 유니콘이 특정 단어를 찾는 문제를 해결하기 위한 DP(Dynamic Programming) 알고리즘을 작성해 보았다. 이 코드는 유니콘의 움직임을 기반으로 단어를 찾는 경로의 경우의 수를 계산하는 프로그램이다. 문제는 유니콘이 나이트와는 다른 방식으로 움직이는 것에 기반해 복잡한 경로를 탐색하는 것에 초점이 있다. >문제 유니...
시스템 규모 확장 (Scalability) 시스템의 사용자 수가 늘어날수록, 시스템이 제대로 동작하고 성능을 유지하기 위해서는 설계와 구조가 매우 중요하다. 특히 수백만의 이용자가 있는 시스템을 개발해야 한다면 몇 가지 중요한 요소들을 고려해야 한다. 무상태(sta
문제 세준이는 길 한가운데에서 전광판을 쳐다보고 있었다. 전광판에는 광고가 흘러나오고 있었다. 한참을 전광판을 쳐다본 세준이는 이 광고가 의미하는 것이 무엇인지 궁금해지기 시작했다. 전광판에는 같은 내용의 문구가 무한히 반복되어 나온다. 또, 전광판의 크기는 전광판에서
또 잔뜩 화가나게 만드네..... 시간초과가 난 코드 정답 코드 Union-Find 자료구조를 활용한 문제 해결 방식을 두 가지 코드를 통해 비교하며 이해했다. 첫 번째 코드는 시간 초과가 발생했지만, 두 번째 코드는 최적화된 방식으로 문제를 해결할 수 있었다. 아래는 두 코드의 차이점과 최적화 기법에 대해 정리한 내용이다. 코드 개요 두 코드...
MVC1 패턴과 MVC2 패턴
React Hook
함수형 프로그래밍 (Functional Programming)
세그먼트 트리(Segment Tree)
문제 접근 방법 다각형 포함 여부 판별: 주어진 점이 빨간색 다각형이나 파란색 다각형 내부에 포함되는지를 확인해야 한다. 이 작업을 위해 외적(cross product)과 내적(dot product)을 활용한 방향 판별을 이용했다. 그림자 영역의 넓이 계산: 주어진 점이 빨간색 다각형 내부에 있으면서 파란색 다각형에는 포함되지 않는 경우, 그림자가 생기...
C++로 알고리즘 문제를 풀 때 cin, cout을 사용하면 실행 속도가 느려질 수 있다. 하지만 최적화 기법을 적용하면 실행 시간을 효율적으로 단축할 수 있다. 특히 문제 풀이 시 시간 제한이 중요한 경우, 아래와 같은 방법을 사용해 속도를 줄여보자.cin, cout
주어진 문자열의 부분 문자열 중 회문인 것의 개수를 구하는 문제를 풀어봤다. 이 문제는 문자열 길이가 최대 200만까지 가능하므로 모든 부분 문자열을 탐색하는 브루트포스 방식으로는 시간 초과가 발생할 수 있다. 그래서 Manacher's 알고리즘을 활용해 문제를 해결했다. Manacher's 알고리즘은 문자열에서 모든 회문의 길이를 O(n)의 시간 복잡도...
CSR & SSR
수열의 값들을 업데이트하면서 구간 합을 구하는 문제를 풀어봤다. 이 문제는 수열의 크기와 쿼리의 개수가 최대 100,000에 이르기 때문에 세그먼트 트리를 이용한 효율적인 접근이 필요했다. 특히, 과거 특정 시점까지 적용된 업데이트 상태에서 구간 합을 구하는 쿼리가
N개의 직사각형 블록으로 두 개의 탑을 만들되, 두 탑의 높이를 같게 하면서 가능한 최대 높이를 구하는 문제를 풀어봤다. 이 문제는 각 블록의 높이를 합쳐서 특정 높이의 차이를 최소화하는 방식으로 접근할 수 있다. 동적 계획법(DP)을 사용해 부분합의 차이를 조절하는 방식으로 풀이했다. 문제 접근 방법 동적 계획법(DP) 설계: dpi는 i번째 블록...
데이터베이스 설계에서 가장 중요한 요소: 무결성 보장 데이터베이스는 기업과 조직이 데이터를 저장하고 관리하는 중요한 시스템이다. 그러나 데이터의 양이 늘어남에 따라 데이터의 신뢰성과 일관성, 즉 무결성을 유지하는 일은 더욱 중요해졌다. 무결성은 데이터베이스가 언제나
이 문제는 네트워크 플로우 알고리즘을 사용해 두 도시(1번과 2번) 간 최대 왕복 횟수를 계산하는 문제였다. 핵심은 최대 유량(Maximum Flow) 알고리즘을 적용해 네트워크를 설계하고, 주어진 조건을 충족시키면서 최대 왕복 가능한 경로를 찾는 것이었다. 문제
이번 문제는 구간 내에서 특정 값보다 큰 원소의 개수를 효율적으로 계산하는 것이다. 배열의 길이와 쿼리의 수가 최대 100,000까지 가능하기 때문에, 효율적인 자료구조와 알고리즘이 필요했다. 이를 위해 머지 소트 트리(Merge Sort Tree)를 사용해 해결했다
트리 구조에서 각 노드와 그 하위 노드들의 손익을 효율적으로 관리하는 문제다. 쿼리의 수가 최대 100,000개까지 가능하기 때문에 효율적인 자료구조와 접근 방식이 필요했다. 이를 위해 세그먼트 트리와 Lazy Propagation을 활용하여 문제를 해결했다. 문제 접근 방법 트리의 오일러 경로(Euler Tour): 트리에서 특정 노드와 그 하위 노...
트리 구조에서 특정 노드와 그 경로에 대해 효율적으로 값을 갱신하고 쿼리를 처리하는 문제였다. 트리의 구조와 구간 연산을 결합하기 위해 오일러 경로 트릭(Euler Tour Trick)과 세그먼트 트리를 사용했다. 이를 통해 물 채우기 및 누적 물량 계산을 효율적으로
N-각형에서의 선 긋기 게임으로, 최적의 방법으로 플레이했을 때 어느 플레이어가 승리할지를 구하는 문제다. 게임 이론의 그룬디 수(Grundy Number)를 활용하여 최적의 해법을 도출했다. 그룬디 수는 컴비네토리얼 게임 이론에서 필수적인 개념으로, 각 상태에서 승패를 결정짓는 핵심 도구다. 코드 코드 설명 1. Grundy 수와 DP 배열 초기화...