끄적끄적 코딩
article thumbnail
[C++] 백준 2441번 별 찍기 - 6
알고리즘 2019. 4. 3. 23:39

별로 역 삼각형 모양을 만드는 문제입니다. 5를 입력하면 5층짜리 역삼각형이 만들어집니다. #include using namespace std; int main(int argc, char *argv[]) { int x; cin >> x; for(int i=0;i

article thumbnail
[C++] 백준 2441번 별 찍기 - 5
알고리즘 2019. 4. 3. 23:25

for문을 이용해서 피라미드 모양 별을 찍는 문제입니다. 5를 입력하면 5줄짜리 피라미드가 완성됩니다. #include using namespace std; int main(int argc, char *argv[]) { int x; cin >> x; for (int i = 0; i 0 + i; --j) { cout

article thumbnail
[C++] 백준 1563번 개근상
알고리즘 2019. 3. 31. 14:47

n의 날짜가 주어집니다. 각각 출석, 지각, 결석을 할 수 있는데 지각을 2번하거나, 결석을 연속3번하면 개근상을 받지 못합니다. 이 때 개근상을 받을 수 있는 경우의 수를 구하는 문제입니다. (경우의 수를 100만으로 나눈 나머지를 출력합니다.) memo[지각][결석]으로 값들을 저장했습니다. 출석과 지각, 결석으로 만들 수 있는 경우의 수는 지각 0 결석 0 지각 0 결석 1 지각 0 결석 2 지각 1 결석 0 지각 1 결석 1 지각 1 결석 2 입니다. 지각 0 결석 0은 - 지각 0 결석 0 (출석) - 지각 1 결석 0 (지각) - 지각 0 결석 1 (결석) 의 3가지 경우의 수를 만들 수 있습니다. 이와 같은 경우의 수를 미리 입력하고 재귀함수를 이용해서 각각의 값들이 더해지면서 풀도록 만들었..

article thumbnail
[C++] 백준 6359번 만취한 상범
알고리즘 2019. 3. 27. 15:44

5개(n)의 방이 있을때 1 - 1 2 3 4 5 2 - 2 4 3 - 3 4 - 4 5 - 5 와 같이 각각의 배수인 방에서 문이 열려있다면 닫고 닫혀있다면 여는 문제입니다. bool 형식으로 room을 100개의 방을 만들어 주었고 해당하는 숫자에 방문을 하였을 시 false -> true로, true -> false로 변경해 주었습니다. 마지막에 true(열림)의 갯수를 체크하여 나가는 사람의 수를 확인했습니다. #include using namespace std; bool room[100]; void init() // 배열 초기화 { for (int i = 0; i < 100; ++i) { room[i] = false; } } int main(int argc, char *argv[]) { int ..

article thumbnail
[C++] 백준 5545번 최고의 피자
알고리즘 2019. 3. 8. 21:36

1원당 열량이 가장 높은 피자를 만들 때 그 열량이 얼마인지 출력하는 문제입니다. 도우를 반드시 올려야하며 토핑은 선택할 수 있습니다. (같은것 두개 선택 불가) 가격은 도우가격 + (토핑가격 * 토핑갯수) 입니다. 이 때 가장 높은 열량을 만들 수 있는 방법을 찾는 문제입니다. (예제 풀이) 1원당 열량을 구하려면 열랑/가격을 해주었습니다. 200 / 12 = 16.666 (도우의 1원당 열량) 50 / 2 = 25 (토핑1 1원당 열량) 300 / 2 = 150 (토핑2 1원당 열량) 100 / 2 = 50 (토핑3 1원당 열량) 먼저 도우의 1원당 열량 보다 높은 수치가 있는지 확인을 합니다. 없다면 도우만 올리는것이 최고의 피자를 만드는 것입니다. 있다면 높은 숫자를 먼저 도우와 합치고 다시 계산..

article thumbnail
[C++] 백준 1138번 한 줄로 서기
알고리즘 2019. 3. 7. 01:13

첫번째줄에는 사람 수를 받고 두번째줄은 왼쪽에 자신보다 큰 사람이 몇명이 있는지를 나타냅니다. 두번째줄에 차례대로 키가 1부터 2, 3 .... 으로 증가합니다. 예제에는 4명이 입력되었으며 키가 1, 2, 3, 4 인 사람이 있다고 볼 수 있습니다. 키가 1인 사람은 왼쪽에 자신보다 큰 사람이 2명 키가 2인 사람은 왼쪽에 자신보다 큰 사람이 1명 키가 3인 사람은 왼쪽에 자신보다 큰 사람이 1명 키가 4인 사람은 왼쪽에 자신보다 큰 사람이 0명 있으므로 4 2 1 3 순으로 서있습니다. 3가지 절차를 통해 문제를 풀었습니다. 1. 왼쪽큰인원 +1명을 하게 되면 큰 인원을 제외한 자리를 찾을 수 있습니다. 2. 왼쪽에 작은 인원이 몇명 있는지 체크를 하면서 그 만큼 더 오른쪽으로 이동합니다. 3. 이미..

article thumbnail
[C++] 백준 4485번 녹색 옷 입은 애가 젤다지?
알고리즘 2019. 3. 6. 14:42

시작위치에서 끝위치까지 최단 비용으로 가는 문제입니다. 위, 아래, 오른쪽 왼쪽으로 이동하면서 가중치를 비교하면서 최단거리를 찾습니다. #include #include #include #include #define INF 100000 using namespace std; typedef pair pii; int adj[130][130]; //위치 값 int dist[130][130]; // 가중치 값 int main() { int tCase = 1; while (tCase++) { int n; //n*n 행렬 cin >> n; //n*n 행렬 입력 if (!n) break; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { dist[i][j] = INF..

article thumbnail
[C++] 백준 1922번 네트워크 연결
알고리즘 2019. 3. 6. 13:55

모든 네트워크의 정점을 최소 비용으로 연결하는 문제입니다. 크루스컬(kruskal) 알고리즘을 사용해서 문제를 풀었습니다. 크루스컬(kruskal) 알고리즘은 그리디 알고리즘을 이용해서 사이클이 형성되지 않으면서 비용이 적은 간선부터 차례대로 선을 연결합니다. #include #include using namespace std; #define MAX_VERTICES 1000 int parent[MAX_VERTICES]; int num[MAX_VERTICES]; typedef struct Node { int value; int from; int to; Node(int value, int from, int to) : value(value), from(from), to(to) { } Node() : value..

검색 태그