diff --git a/week1/README.md b/week1/README.md index e69de29..80c29fb 100644 --- a/week1/README.md +++ b/week1/README.md @@ -0,0 +1 @@ +# 테스트 diff --git a/week1/bj_17478.cpp b/week1/bj_17478.cpp new file mode 100644 index 0000000..22adcbc --- /dev/null +++ b/week1/bj_17478.cpp @@ -0,0 +1,32 @@ +#include +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개 필요 +} \ No newline at end of file diff --git a/week2/bj_14225.cpp b/week2/bj_14225.cpp new file mode 100644 index 0000000..2316f96 --- /dev/null +++ b/week2/bj_14225.cpp @@ -0,0 +1,31 @@ +#include +#include +#include +#include +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; +} \ No newline at end of file diff --git a/week3/bj_24501.cpp b/week3/bj_24501.cpp new file mode 100644 index 0000000..f0099aa --- /dev/null +++ b/week3/bj_24501.cpp @@ -0,0 +1,41 @@ +#include +#include +using namespace std; + +int main() { + int n, k; + cin >> n >> k; + + vector 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; +} +