Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions week1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# 테스트
32 changes: 32 additions & 0 deletions week1/bj_17478.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#include <iostream>
using namespace std;

// 백준은 endl대신 \n을 쓰자!
void recursion(int n, int m) {
for (int i = 0; i < 4*(m-n); i++) cout << "_";
cout << "\"재귀함수가 뭔가요? \"" << endl;
if (n == 0) { // Base case: 종료 조건
for (int i = 0; i < 4 * (m - n); i++) cout << "_";
cout << "\"재귀함수는 자기 자신을 호출하는 함수라네\"" << endl;
for (int i = 0; i < 4 * (m - n); i++) cout << "_";
cout << "라고 답변하였지." << endl;
}
else {
for (int i = 0; i < 4 * (m - n); i++) cout << "_";
cout << "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어." << endl;
for (int i = 0; i < 4 * (m - n); i++) cout << "_";
cout << "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지." << endl;
for (int i = 0; i < 4 * (m - n); i++) cout << "_";
cout << "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"" << endl;
recursion(n - 1, m); // Recursive case: 재귀
for (int i = 0; i < 4 * (m - n); i++) cout << "_";
cout << "라고 답변하였지." << endl;
}
}

int main() {
int k;
cin >> k;
cout << "어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다." << endl;
recursion(k, k); // _를 4의 배수로 출력할 for문을 위해 매개변수 2개 필요
}
31 changes: 31 additions & 0 deletions week2/bj_14225.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
using namespace std;

int N;
int check[2000001];
int seq[21];

void solve(int x, int sum) {
check[sum] = true;
if (x == N) return;
else{
solve(x + 1, sum);
solve(x + 1, sum + seq[x]);
}
}

int main() {
cin >> N;

for (int i = 0; i < N; i++)
cin >> seq[i];

solve(0, 0); // 공집합 부터 시작

int j = 1;
while (check[j] == true) j++;
cout << j;
}
41 changes: 41 additions & 0 deletions week3/bj_24501.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#include <iostream>
#include <vector>
using namespace std;

int main() {
int n, k;
cin >> n >> k;

vector<int> arr(n);
for (int i = 0; i < n; i++) cin >> arr[i];

int i, j, newItem, cnt=0;

// 삽입정렬 알고리즘
for (i = 1; i < n; i++) {
newItem = arr[i];
for (j = i - 1; j >= 0; j--) {
if (newItem < arr[j]) {
arr[j + 1] = arr[j]; // 위치 업데이트 시 cnt++
cnt++;
if (cnt == k) {
cout << arr[j+1];
return 0;
}
}
else break;
}

if (j + 1 != i) { // newItem이 같은 위치인 경우 굳이 다시 저장할 필요 X
arr[j + 1] = newItem; // 위치 업데이트시 cnt++
cnt++;
}
if (cnt == k) {
cout << arr[j+1];
return 0;
}
}
// return에 걸리지 않음 = 이동횟수가 k보다 작음
cout << -1;
}