전체글399 [알고리즘] 재귀 함수, 꼬리 재귀 재귀 함수 재귀 함수는 어떠한 함수에서 자기 자신을 다시 호출하여 작업을 수행하는 방식의 함수이다. 반복문을 사용하는 함수를 재귀 함수를 통해 구현하는 것이 가능하다. 재귀 함수는 보통 재귀적 사용이 자연스러울 때 사용된다. 재귀 함수의 장점 코드가 간결해지고, 가독성이 좋아진다. 변수 선언을 줄일 수 있다. 재귀 함수의 단점 시간 복잡도의 계산이 반복문에 비해 어렵다. 함수 호출이 많아지면 Stack Overflow의 위험이 있다. 호출할 때마다 메모리의 스택이 쌓여 성능에 문제가 생긴다. 재귀 함수의 예제 public static int factorial(int n) { if(n == 1) return 1; return n * factorial(n - 1); } 꼬리 재귀 알고리즘 재귀 함수의 단점을.. Algorithm 2022. 4. 6. [알고리즘] Brute Force Algorithm(전수 조사 알고리즘) Brute Force Algorithm(전수 조사 알고리즘) 모든 경우를 다 조사해보는 방법이다. 처음부터 끝까지 계산을 해나가며 해답을 찾는데, 이는 경우의 수가 제한적일 경우에만 사용 가능하다. 하지만 컴퓨터가 계산을 해나가기 때문에 생각보다 범위가 크다. Brute Force의 종류 선형 구조 - 순차 탐색 비선형 구조 - DFS(깊이 우선 탐색), BFS(너비 우선 탐색) 순차 탐색이 흔히 말하는 Brute Force라고 생각이 된다. DFS와 BFS는 후에 따로 설명을 하겠다. 전수 조사 방법 전수 조사는 보통 재귀적으로 구현한다. 하지만 모든 재귀는 반복문을 이용해 동일한 기능을 구현할 수 있으므로, 반복문을 통해서도 구현이 가능하다. 가능한 모든 경우의 수를 전부 조사하는 방법이라 단순한 접.. Algorithm 2022. 4. 4. [백준/BOJ] 11722번: 가장 긴 감소하는 부분 수열 https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net 문제 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} 이고, 길이는 3이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N.. PS(Problem Solving)/BOJ 2022. 3. 28. 데이터베이스 시스템 개요 DB 시스템(Database System: DBS)이란? - 데이터를 DB에 저장하고, DBMS를 사용해서 필요한 정보를 관리하고 생성하는 컴퓨터 중심의 시스템이다. DB 시스템의 구성 요소 No. 구성 요소 역할 1 데이터베이스(DB) 데이터를 저장한다. 2 데이터베이스 관리 시스템(DBMS) DB를 생성, 관리, 조작함으로써 사용자와 DB를 연결해주는 소프트웨어이다. 3 데이터 언어 (Data Language) DB 정의와 조작, 제어를 위한 DB 전용 언어이다. 4 DB 사용자 데이터 언어를 사용해서 DB에 접근하는 사람으로, 일반 사용자와 응용 프로그래머, DB 관리자로 구분할 수 있다. 5 DB 컴퓨터 효율적인 DB 관리를 위해서 DB에 대한 연산을 전담하는 DB 관리 전용 컴퓨터이다. 데이터 .. Database 2022. 3. 27. [백준/BOJ]1927번: 최소 힙 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제 널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보.. PS(Problem Solving)/BOJ 2022. 3. 27. [백준/BOJ] 6603번: 로또 https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13.. PS(Problem Solving)/BOJ 2022. 3. 27. [백준/BOJ] 1912번: 연속합 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지.. PS(Problem Solving)/BOJ 2022. 3. 26. [백준/BOJ] 1788번: 피보나치 수의 확장 https://www.acmicpc.net/problem/1788 1788번: 피보나치 수의 확장 첫째 줄에 F(n)이 양수이면 1, 0이면 0, 음수이면 -1을 출력한다. 둘째 줄에는 F(n)의 절댓값을 출력한다. 이 수가 충분히 커질 수 있으므로, 절댓값을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 수학에서, 피보나치 수는 위의 점화식과 같이 귀납적으로 정의되는 수열이다. 위의 식에서도 알 수 있듯이, 피보나치 수 F(n)은 0 이상의 n에 대해서만 정의된다. 하지만 피보나치 수 F(n)을 n이 음수인 경우로도 확장시킬 수 있다. 위의 식에서 n > 1인 경우에만 성립하는 F(n) = F(n-1) + F(n-2)를 n ≤ 1일 때도 성립되도록 정의하는 것이.. PS(Problem Solving)/BOJ 2022. 3. 26. [백준/BOJ] 12847번: 꿀 아르바이트 https://www.acmicpc.net/problem/12847 12847번: 꿀 아르바이트 월세를 내기 바로 전 날 까지 인 n (1 ≤ n ≤ 100,000) 일과 일을 할 수 있는 날 m (0 ≤ m ≤ n) 일이 주어진다. 그 다음 줄 에는 1일부터 n일 까지 일급 Ti가 순서대로 주어진다. (0 < Ti ≤ 1,000,000) www.acmicpc.net 문제 윤호는 퍼주기로 유명한 편의점 사장이다. 그의 편의점에는 특이한 임금 체계를 가지고 있다. 각 날마다 일의 차이때문에 일마다 급여가 정해져 있다. 윤호는 오차 없이 일급을 따박 따박 당일에 준다. 정해진 일 수 만큼만 일을 시킨다. 한번이라도 퇴직한 자를 다시 취직 시키지 않는다. (만약 취직을 한다면, 일을 시작 한 날부터 끝날 때까.. PS(Problem Solving)/BOJ 2022. 3. 6. [백준/BOJ] 3758번: KCPC https://www.acmicpc.net/problem/3758 3758번: KCPC 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 테스트 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫 번째 줄에는 www.acmicpc.net 문제 당신은 유명 프로그래밍 대회인 KCPC(Korean Collegiate Programming Contest)에 참가하고 있다. 이 대회에서 총 k개의 문제를 풀게 되는데, 어떤 문제에 대한 풀이를 서버에 제출하면 그 문제에 대해 0점에서 100점 사이의 점수를 얻는다. 풀이를 제출한 팀의 ID, 문제 번호, 점수가 서버의 로그에 제출되는 시간 순서대로 저장된다. 한 문제에 대한 풀이를 여러 번 제출.. PS(Problem Solving)/BOJ 2022. 3. 6. 데이터베이스 관리 시스템 개요(2) ANSI/SPARC 구조 DB구조를 3단계로 구분한 주된 목적은 DB에 대한 다양한 사용자의 관점과 DB가 실제로 표현되는 방식 즉, 물리적 관점을 분리시키는 것으로, 이런 구분을 통해 응용 프로그램과 데이터 간의 독립성을 제공할 수 있다. -> 사용자는 DB의 내부 구조를 알지 못해도 DB를 사용할 수 있고, DB 관리자는 응용 프로그램에 영향을 주지 않고 DB 구조를 변경할 수 있다. ANSI/SPARC 구조의 구성 (1) 외부 단계 개별 사용자의 관점으로, 각 사용자나 응용 프로그래머가 생각하는 개인적인 DB 구조를 의미한다. -> 다양한 개별 사용자나 응용 프로그램이 필요로 하는 데이터 구조를 정의한 다양한 외부 스키마가 존재한다. (2) 개념 단계 DB를 바라보는 사용자 공동체의 관점 즉, 한 .. Database 2022. 3. 5. 데이터베이스 관리 시스템 개요(1) 데이터베이스 관리 시스템(DBMS)의 정의 데이터베이스 관리 시스템(Database Management System: DBMS)은 DB 관리자와 사용자 및 응용 프로그램과 DB 간의 중재자로서, DB에 대한 모든 접근을 처리해주는 소프트웨어 시스템으로 정의된다. ① DB의 정의와 조작 및 제어 기능을 제공한다. ② 여러 사용자 및 응용 프로그램들이 DB를 공용할 수 있도록 관리해 주는 소프트웨어 시스템이다. ③ DBMS를 통해서만 DB를 활용하는 것이 가능하다. DB는 특정 응용 프로그램에 종속된 것이 아니라 여러 응용 프로그램이 공용할 수 있다. 이처럼 응용 프로그램이 데이터에 종속되지 않는 데이터 독립성을 제공하는 것이 DBMS의 궁극적인 목적이다. ※ DBMS의 궁극적인 목적: DB의 구조를 변경해.. Database 2022. 3. 5. 이전 1 ··· 16 17 18 19 20 21 22 ··· 34 다음 728x90