반응형

C 235

[ C / C++ ] 백준 20301 반전 요세푸스

문제 요세푸스 문제는 다음과 같다. 1$1$번 사람 오른쪽에는 2$2$번 사람이 앉아 있고, 2$2$번 사람 오른쪽에는 3$3$번 사람이 앉아 있고, 계속하여 같은 방식으로 N$N$명의 사람들이 원을 이루며 앉아 있다. N$N$번 사람 오른쪽에는 1$1$번 사람이 앉아 있다. 이제 K$K$(≤N$\leq N$)번 사람을 우선 제거하고, 이후 직전 제거된 사람의 오른쪽의 K$K$번째 사람을 계속 제거해 나간다. 모든 사람이 제거되었을 때, 제거된 사람의 순서는 어떻게 될까? 이 문제의 답을 (N$\boldsymbol{N}$, K$\boldsymbol{K}$)–요세푸스 순열이라고 하며, (7$7$, 3$3$)–요세푸스 순열은 ⟨3,6,2,7,5,1,4⟩$\left$가 된다. 하지만 한 방향으로만 계속 돌아가..

Algorithm/BAEKJOON 2022.05.21

[ C / C++ ] 백준 17478 재귀함수가 뭔가요?

문제 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대학교가 자신과 맞는가에 대한 고민을 항상 해왔다. 중앙대학교와 자신의 길이 맞지 않다고 생각한 JH 교수님은 결국 중앙대학교를 떠나기로 결정하였다. 떠나기 전까지도 제자들을 생각하셨던 JH 교수님은 재귀함수가 무엇인지 물어보는 학생들을 위한 작은 선물로 자동 응답 챗봇을 준비하기로 했다. JH 교수님이 만들 챗봇의 응답을 출력하는 프로그램을 만들어보자. #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int cnt = 0; v..

Algorithm/BAEKJOON 2022.05.20

[ C / C++ ] 백준 17363 우유가 넘어지면?

문제 유머 감각이 뛰어난 성원이는 매일 재미있는 농담을 준비한다. 오늘 준비한 농담은 바로 이것이다. 우유가 넘어질 때 뭐라고 하게? 답은 "아야"! 깔깔! 친구들의 반응이 심드렁하자, 성원이는 해설을 덧붙였다. "우유"가 세로로 적혀 있는 상자를 왼쪽으로 툭 넘어뜨리면 "아야"가 되잖아? 이게 마치 우유가 넘어져서 아파하는 것 같다는 점이 웃음 포인트야! 그럼에도 불구하고 친구들이 웃지 않자, 성원이는 친구들이 공간지각력이 부족해 상자를 넘어뜨리는 모습을 상상하지 못한다고 생각했다. 그래서 상자를 넘어뜨리는 프로그램을 만들어 친구들에게 결과를 보여주기로 했다. 성원이는 상자에 "우유"가 아니라 다른 그림이 그려져 있어도 프로그램이 잘 동작하기를 원한다. 성원이는 상자의 면을 격자로 나누고 각 칸에 아래..

Algorithm/BAEKJOON 2022.05.19

[ C / C++ ] 백준 16504 종이접기

문제 종이접기와 수학을 좋아하는 주성이는 종이접기와 수학을 한꺼번에 할 수 있는 놀이를 찾아냈다. 바로 N×N 크기를 가지는 색종이의 각 칸에 수를 적어놓고, 색종이를 반으로 접을 때마다 겹치는 부분의 수들을 더하는 것이다. 그리고 이 작업을 색종이를 더는 접을 수 없을 때까지 반복했을 때, 가장 마지막에 남는 수를 구하는 놀이이다. 아래의 예시는 위에서 설명한 놀이의 과정을 2×2 크기의 색종이를 사용하여 상세하게 나타낸 그림이다. 색종이를 왼쪽에서 오른쪽으로 정확히 반을 접는다. 겹치는 두 칸에 있는 수를 서로 더한다. 위 그림에서는 (1, 1)과 (1, 2)의 두 칸이 겹치고, (2, 1)과 (2, 2)의 두 칸도 겹치는 부분이다. 더한 값을 색종이 위에 다시 적는다. 색종이를 아래쪽에서 위쪽으로 ..

Algorithm/BAEKJOON 2022.05.18

[ C / C++ ] 백준 15815 천재 수학자 성필

문제 평행 세계의 성필은 숫자와 연산자를 만든 당대 최고의 수학자이다. 그리고 놀랍게도 이 숫자와 연산자는 현재 우리가 사용하는 것과 같다. 하지만 수식은 연산자가 피연산자 가운데 위치하는 우리와는 다르게 연산자가 피연산자 뒤에 위치한다고 한다. 우리 세계의 식을 성필의 식으로 바꾸는 방법을 간단히 설명하자면 이렇다. 우선 주어진 식을 연산자의 우선순위에 따라 괄호로 묶어준다. 그런 다음에 괄호 안의 연산자를 괄호의 오른쪽으로 옮겨주면 된다. 예를 들어 a+b*c는 (a+(b*c))의 식과 같게 된다. 그다음에 안에 있는 괄호의 연산자 *를 괄호 밖으로 꺼내게 되면 a+bc*가 된다. 마지막으로 또 +를 괄호의 오른쪽으로 고치면 abc*+가 되게 된다. 천재 수학자 성필은 자신이 만든 이런 간단한 식조차..

Algorithm/BAEKJOON 2022.05.16

[ C / C++ ] 백준 15664 N과 M(10)

문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. #include #include using namespace std; bool check[8]; int n, m, num[8], result[8]; void getResult(int count, int start) { if (count == m) { for (int i = 0; i m; for (int i = 0; i > num[i]; sort(n..

Algorithm/BAEKJOON 2022.05.15

[ C / C++ ] 백준 15663 N과 M(9)

문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수 중에서 M개를 고른 수열 #include #include using namespace std; bool check[8]; int n, m, num[8], result[8]; void getResult(int count) { if (count == m) { for (int i = 0; i m; for (int i = 0; i > num[i]; sort(num, num + n); getResult(0); return 0; }

Algorithm/BAEKJOON 2022.05.14

[ C / C++ ] 백준 15656 N과 M(7)

문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int n, m, visited[7], ans[7]; void go(int index) { if (index == m) { for (int i = 0; i < m; i++) printf("%d ", ans[i]); printf("\n"); return; } for (int i = 0; i < n; i++) { ans[index] = ..

Algorithm/BAEKJOON 2022.05.13

[ C / C++ ] 백준 15655 N과M(6)

문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 오름차순이어야 한다. #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int n, m, visited[8], ans[10]; bool check[8]; void go(int index, int pre) { if (index == m) { for (int i = 0; i < m; i++) printf("%d ", ans[i]); printf("\n"); return; } for (int i = pre; ..

Algorithm/BAEKJOON 2022.05.12
반응형