분류 전체보기 146

[ODOQ] DB 인덱스(Index)

[One Day One Question]DB에서 인덱스에 대해 설명해 주세요.데이터베이스 인덱스는 테이블에서 데이터를 빠르게 검색하기 위해 사용하는 데이터 구조입니다. 책의 목차처럼 작동하여 특정 데이터를 빠르게 찾을 수 있게 해줍니다. 1. 인덱스의 역할검색 속도 향상: 테이블에 저장된 데이터 중 특정 값을 찾거나 범위를 검색할 때, 테이블 전체를 탐색(Full Table Scan)하는 대신 인덱스를 통해 필요한 데이터에 바로 접근할 수 있습니다.데이터 정렬: 인덱스는 데이터를 정렬된 상태로 유지하므로, 검색뿐 아니라 정렬, 그룹화와 같은 작업에서도 성능을 향상시킵니다.2. 인덱스의 장점빠른 검색: 특정 데이터를 빠르게 찾을 수 있습니다.정렬 비용 감소: 데이터를 이미 정렬된 상태로 유지합니다.쿼리 성..

cs/ODOQ 2024.11.28

[ODOQ] 일급 컬렉션

[One Day One Question]일급 컬렉션에 대해서 설명해 주세요일급 컬렉션(First-class Collection)은 객체 지향 설계에서 컬렉션(리스트, 맵, 세트 등)을 다룰 때 사용하는 설계 패턴입니다. 단순히 컬렉션을 감싸는 클래스를 만드는 것처럼 보이지만, 이 패턴을 활용하면 설계의 명확성과 유지보수성을 크게 향상시킬 수 있습니다. 일급 컬렉션의 특징단일 컬렉션만 포함컬렉션 외에 다른 멤버 변수를 가지지 않습니다.해당 클래스를 통해 컬렉션에 대한 작업을 수행합니다.public class Members { private final List members; // 단일 컬렉션 public Members(List members) { this.members = new A..

cs/ODOQ 2024.11.27

[ODOQ] Checked Exception, Unchecked Exception

[One Day One Question]자바에서 Checked Exception과 Unchecked Exception의 차이점을 설명해 주세요1. Checked Exception정의Checked Exception은 컴파일러가 예외 처리를 강제로 요구하는 예외입니다.즉, 이러한 예외가 발생할 가능성이 있는 코드는 반드시 try-catch 블록으로 처리하거나, 해당 메서드의 throws 선언부에 명시해야 합니다.특징컴파일 단계에서 확인되며, 처리되지 않으면 컴파일 에러가 발생합니다.예외 처리가 필수적이므로, 프로그램의 안정성을 높이는 데 도움을 줍니다.주로 외부 환경과의 상호작용에서 발생하는 예외에 해당합니다.예시IOException (파일 입출력 관련)SQLException (데이터베이스 관련)ClassN..

cs/ODOQ 2024.11.26

[프로그래머스] [PCCP 기출문제] 4번 / 수식 복원하기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/340210 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 개요주어진 수식에서 2~9진법 중 하나를 사용하고 있다는 전제하에, 수식의 진법을 판단하고 지워진 결괏값(X)을 올바르게 채워넣는 문제입니다. 모든 수식은 덧셈(+) 또는 뺄셈(-) 연산으로 이루어져 있으며, 정확한 결과를 도출하거나 불확실할 경우 ?로 표기해야 합니다. 접근 방법진법 검증을 위한 데이터 구조 설정2진법부터 9진법까지의 유효성을 확인하기 위해, 각 진법에서 해당 수식이 성립하는 횟수를 기록하는 배열(base)을 선언합..

[프로그래머스] [PCCP 기출문제] 1번 / 동영상 재생기도움말 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/340213 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요동영상 재생기를 구현하는 문제로, 사용자가 입력한 명령에 따라 동영상의 재생 위치를 조정하는 기능을 제공합니다. 동영상의 길이, 현재 재생 위치, 오프닝 구간의 시작과 끝 시각이 주어지며, 사용자는 "prev"와 "next" 명령을 통해 재생 위치를 조정할 수 있습니다. 오프닝 구간에 있을 경우, 자동으로 오프닝이 끝나는 위치로 이동해야 합니다. 최종적으로 모든 명령이 수행된 후의 재생 위치를 "mm:ss" 형식으로 반환해야 합..

[ODOQ] JPA의 N + 1

[One Day One Question]JPA의 N+1에 대해서 설명해주세요JPA의 N+1 문제는 데이터베이스에서 쿼리를 수행할 때 발생하는 성능 저하 문제입니다. 이 문제는 주로 연관된 엔티티를 조회할 때 발생하며, 기본적으로 N개의 엔티티를 조회할 때 추가로 N개의 쿼리가 발생하는 상황을 의미합니다. 예를 들어, 게시글과 댓글을 조회할 때, 게시글을 조회한 후 각 게시글마다 댓글을 조회하기 위해 추가 쿼리가 발생한다면 N + 1 문제가 발생한 것입니다. @Entitypublic class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; @On..

cs/ODOQ 2024.11.25

[ODOQ] TCP와 UDP의 차이점

[One Day One Question]TCP와 UDP의 차이점을 설명해주세요 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 인터넷에서 데이터를 전송하기 위해 사용하는 프로토콜입니다. 두 프로토콜은 데이터 전송 방식과 특징에서 주요 차이점이 있습니다.1. 연결 기반 vs 비연결 기반TCP: 연결 기반 프로토콜로, 데이터를 전송하기 전에 송신자와 수신자 간에 연결을 설정합니다. 이를 3-way handshake라고 합니다.UDP: 비연결 기반 프로토콜로, 연결 설정 없이 데이터를 전송합니다. 송신자는 데이터를 바로 전송하며 수신 여부를 확인하지 않습니다. 2. 신뢰성TCP: 신뢰성이 보장됩니다. 데이터의 손실, 중복, 순서가 어긋나는 경..

cs/ODOQ 2024.11.25

[프로그래머스] 문자열 나누기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 개요주어진 문자열 s를 특정 규칙에 따라 여러 부분 문자열로 분해하고, 분해된 문자열의 개수를 반환하는 문제입니다. 분해 규칙은 다음과 같습니다:첫 글자를 기준으로 두 종류의 문자(x, x가 아닌 다른 문자)의 등장 횟수를 비교합니다.두 종류의 문자 등장 횟수가 같아지는 순간 문자열을 분리합니다.분리 후 남은 문자열에 대해 같은 과정을 반복합니다.남은 문자열이 없다면 종료합니다.접근 방법초기화 및 설정첫 글자를 기준으로 문자 x를 설정..

[프로그래머스] 달리기 경주 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요얀의 달리기 경주에서 선수들이 추월하는 상황을 바탕으로 경주 종료 후 최종 순위를 구하는 문제입니다. 선수들이 초기 순위대로 주어지고, 해설진이 특정 선수를 호출하면 해당 선수가 바로 앞의 선수를 추월합니다. 이를 반복한 뒤, 최종적으로 모든 선수의 순위를 반환해야 합니다.접근 방법HashMap을 활용하여 간단하게 해결할 수 있는 문제입니다.코드import java.util.*;class Solution { public S..

유클리드 호제법 (최대 공약수, 최소 공배수)

유클리드 호제법은 두 수의 최대공약수(Greatest Common Divisor, GCD)를 계산하는 가장 효율적인 알고리즘입니다. 이를 활용하면 두 숫자의 최소공배수(Least Common Multiple, LCM)도 쉽게 구할 수 있습니다. 유클리드 호제법의 원리유클리드 호제법은 다음 성질을 이용합니다:두 수 A와 B의 최대공약수는, A와 B를 나눈 나머지(A%B)의 최대공약수와 같습니다.즉, GCD(A , B) = GCD(B , A%B)이 과정을 반복하여 나머지가 0이 되었을 때, 그 나누는 값이 최대공약수입니다.예시: A=24, B=3624%36=24, 따라서 GCD(24,36) = GCD(36,24)36%24=12, 따라서 GCD(36,24) = GCD(24,12)24%12=0, 따라서 GCD(..

cs/알고리즘 2024.11.24