전체 글 85

백준/11729번(하노이타워 재귀)/C

재귀함수 구현 연습을 해볼 수 있는 간단한 문제 #include #include void hanoi_rec(int from, int mid, int to, int x) {//하노이 함수 if (x == 1) { printf("%d %d\n", from, to); } else { hanoi_rec(from, to, mid, x - 1); printf("%d %d\n", from, to); hanoi_rec(mid, from, to, x - 1); } } int main(void) { int n; scanf("%d", &n); int execution; execution = pow(2, n) - 1;//시행 횟수 출력 printf("%d\n", execution); hanoi_rec(1, 2, 3, n); ..

백준/ 1260번(DFS와 BFS)/ C++ ; Vector와 sort함수 사용

DFS와 BFS를 구현하는 연습을 해볼 수 있는 기본 문제. 주의해야 할 점 1. 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문. 2. 입력으로 주어지는 간선은 양방향. 3. 간선이 없는 노드. 더 이상 방문할 수 있는 점이 없는 경우 종료되기 때문에, 어떠한 노드와도 연결되어 있지 않은 노드는 따로 처리해줄 필요가 없다. #include #include #include #include #include using namespace std; int c[1001]; //정점에 방문했는지 체크하는 배열 vector a[1001]; //그래프 정보 저장하는 벡터 //처음 그래프를 구성할 때에 에지를 추가하는 함수 void insert_edge(int i, int j) { a[i]...

기본 자료구조; 배열의 개념과 응용(다항식 구현)

배열이란? -> 일반적으로 같은 형의 변수를 여러 개 만드는 경우에 사용. ˙ 개념 int A[6]; //1차원 배열 char s[12] = "game over" //문자열, terminating null character인 '\0'을 포함. int A[4][3] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}} //2차원 배열, 행 우선. int A[3][3][3]; //3차원 배열 * 2차원 배열에서의 실제 주소 구하기 : 2차원 정수 배열 A[m][n]에서 A[j][k]의 실제 주소 = base + ( j x n + k ) x sizeof(int) * 3차원 배열에서의 실제 주소 구하기 : 3차원 실수 배열 A[l][m][n]에서 A[i][j][k]의 실제 주소 = base + ..

CS/자료구조(DS) 2021.02.05

재귀와 반복 ; 팩토리얼, 피보나치수

재귀(recursion) : -> 함수가 자기 자신을 다시 호출하는, 재귀 호출을 이용하는 방법. 불필요한 호출을 하게 되는 경우가 있음. 반복(iteration) : -> for문, while문, repeat문 등의 반복문을 이용. 재귀보다 수행속도가 빠르고 효율적이지만 문제 자체가 재귀적인 경우에는 프로그램 작성이 어려울 수 있음. but, 대부분의 재귀는 반복문을 사용해 작성할 수 있음. 1. 팩토리얼 함수 - 반복적 정의와 프로그램 n! = 1 if n = 0 n! = n x ( n - 1 ) x ( n - 2 ) x ··· x 1 if n > 0 int factorial_iter(int n) { int i, fact = 1; for (i=n; i>0; i--) fact = fact * i; re..

CS/자료구조(DS) 2021.02.04

알고리즘의 개념과 특징, 성능분석(차수 표기법)

알고리즘이란 ? -> 컴퓨터로 문제를 풀기 위한 단계적 절차 컴퓨터 프로그램은 자료구조와 알고리즘으로 구성된다고 할 수 있다. 독립적인 프로그램이 하나의 문장이라면, 자료구조는 명사이고 알고리즘은 동사인 셈 ! 알고리즘의 특징 (Donald Knuth에 의한 정의. 1968,1973) 입력 조건(input) : 외부에서 제공 가능, zero or more 출력 조건(output) : 하나 이상의 출력을 생성해야 함, one or more 명확성(definiteness) : 각 명령은 모호하지 않아야 함 유한성(finiteness) : 유한 스텝 후 종료해야 함 효과성(effectiveness) : 모든 명령어들은 원칙적으로 사람에 의해 종이와 연필만으로도 수행될 수 있도록 단순하고 기본적인 것이어야 함...

CS/알고리즘 2021.01.27