전체 글 152

[프로그래머스] 최고의 집합 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/12938# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요주어진 자연수의 개수 n과 합 s를 만족하는 집합 중, 각 원소의 곱이 최대가 되는 집합을 구하는 문제입니다. 만약 해당 조건을 만족하는 집합이 없다면 [−1]을 반환합니다. 접근 방법조건 확인n>s인 경우, 합 s를 만들 수 없으므로 [−1]을 반환합니다.최적의 분배 계산합 s를 n개의 원소로 최대한 고르게 나누는 것이 곱을 최대화하는 방법입니다.각 원소에  s/n을 할당합니다.s%n의 나머지 값은 각 원소에 하나씩 분배하여 ..

[프로그래머스] 정수 삼각형 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요주어진 삼각형 구조에서 꼭대기에서 시작하여 대각선 아래 방향으로 이동하며 숫자의 합을 최대화하는 경로를 찾는 문제입니다. 각 위치에서는 바로 아래칸의 두 개의 숫자 중 하나로만 이동할 수 있습니다. 접근 방법역방향 동적 프로그래밍(DP)삼각형의 아래쪽에서부터 위쪽으로 값을 갱신하며 최대값을 계산합니다.각 칸에서 가질 수 있는 최대값을 그 칸의 값과 아래층 두 칸의 최대값 중 더 큰 값을 더하여 구합니다.구체적인 동작삼각형의 가장 ..

[프로그래머스] 무인도 여행 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요무인도에서 상, 하, 좌, 우로 연결된 땅들을 하나의 섬으로 간주하며, 각 섬의 식량 값을 모두 더해 해당 섬에서 머무를 수 있는 최대 일 수를 계산하는 문제입니다. 지도를 나타내는 문자열 배열이 주어지고, 숫자는 섬의 땅을, 'X'는 바다를 나타냅니다. 여러 섬의 최대 머무를 수 있는 일수를 계산하여 오름차순으로 정렬하여 반환합니다. 섬이 없다면 -1을 반환합니다.접근 방법지도 초기화문자열 배열을 정수형 배열 map으로 변환하..

[프로그래머스] 미로 탈출 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요1 x 1 크기의 직사각형 미로에서 시작 지점에서 출발해 레버를 작동시킨 후 출구로 이동하여 탈출하는 데 걸리는 최소 시간을 구하는 문제입니다. 이동은 통로에서만 가능하며, 벽은 지나갈 수 없습니다. 레버를 작동시키기 전에도 출구를 지나갈 수는 있지만, 레버를 작동해야만 출구를 통해 탈출할 수 있습니다.접근 방법지도 구성: 주어진 문자열 배열을 2차원 배열로 변환하여 미로 지도를 만듭니다.BFS 탐색:시작점에서 레버 위치까지의 ..

[ODOQ] 트랜잭션 격리수준

[One Day One Question]DB에서 인덱스에 대해 설명해 주세요.트랜잭션 격리 수준(Transaction Isolation Level)은 데이터베이스에서 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션이 다른 트랜잭션으로부터 얼마나 고립(isolated)되어 있는지를 정의하는 기준입니다. 이는 데이터 무결성을 유지하면서 동시에 데이터베이스 성능을 최적화하기 위해 설계되었습니다. 1. READ UNCOMMITTED (읽기 미완료 허용)특징:다른 트랜잭션이 아직 커밋하지 않은 데이터를 읽을 수 있음.가장 낮은 격리 수준으로, 데이터 일관성이 깨질 가능성이 높음.문제점:Dirty Read: 커밋되지 않은 데이터를 읽음으로써, 이후 롤백되면 잘못된 데이터를 읽은 문제가 발생. 2. READ COMM..

cs/ODOQ 2024.11.29

[프로그래머스] [PCCP 기출문제] 4번 / 수레 움직이기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/250134 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 개요이 문제는 n x m 크기의 격자 모양 퍼즐판에서 두 개의 수레(빨간색과 파란색)를 각각 자신의 도착 칸으로 이동시키는 퍼즐을 푸는 문제입니다. 수레들은 상하좌우로 한 칸씩 이동하며, 여러 제약 조건을 준수해야 합니다.수레는 벽이나 격자 판 밖으로 움직일 수 없습니다.수레는 자신이 방문했던 칸으로 움직일 수 없습니다.자신의 도착 칸에 위치한 수레는 움직이지 않습니다.계속 해당 칸에 고정해 놓아야 합니다. 동시에 두 수레를 같은 칸..

[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)을 선언합..