Problem Solving
-
[BOJ] #14501 _ 퇴사Problem Solving/BOJ 2019. 8. 28. 21:25
[퇴사] https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net dfs를 이용하여 모든 경우의 수를 해보고, 최대 수익을 구하였다. 찾아보니 DP를 이용해 풀 수도 있다. [ 소스 코드 ] #include #include #define MAX 15 using namespace std; int N, T[MAX + 1], P[MAX + 1]; int result = 0; void solve(int day, int TotalPrice); int main() { scanf("%d", &N); for (int i = 1; i N) { result = max(result, TotalPrice); r..
-
[BOJ] #14499 _ 주사위 굴리기Problem Solving/BOJ 2019. 8. 28. 21:19
[주사위 굴리기] https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 주어진 주사위 도면도의 숫자가 동쪽, 서쪽, 북쪽, 남쪽으로 이동할 때 동일한 규칙으로 변경된다. 주사위의 방..
-
[BOJ] #2644 _ 촌수계산Problem Solving/BOJ 2019. 8. 28. 20:49
[촌수계산] https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진다. 그리고 셋째 줄에는 부모 자식들 간의 관계의 개수 m이 주어진다. 넷째 줄부터는 부모 자식간의 관계를 나타내는 두 번호 x,y가 각 줄에 나온다. 이때 앞에 나오는 번호 x는 뒤에 나오는 정수 y의 부모 번호를 나타낸다. 각 사람의 부모는 최대 www.acmicpc.net 부모가 한명 뿐이기 때문에 부모만 저장하여 쉽게 풀 수 있다. 부모배열에 부모를 다 저장해두고, 상위로 올라가면서 공통의 부..
-
[BOJ] #2468 _ 안전 영역Problem Solving/BOJ 2019. 8. 28. 20:03
[안전 영역] https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어 www.acmicpc.net bfs나 dfs를 이용하여 안전한 구역의 개수를 세는 문제이다. [ 소스 코드 ] #include #include #in..
-
[SWEA] #1209 _ SumProblem Solving/SWEA 2019. 8. 12. 23:18
[Sum] https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 아주 쉬운 문제로 그냥 다 더해서 가장 큰 수를 찾으면 된다 :) [ 소스 코드 ] #include #include #define MAX 100 using namespace std; int arr[MAX + 1][MAX + 1] = { 0, }; int solve(); int main() { int case_num; for (int i = 0; i < 10; i++) { scanf("%d", &case_num); for (int j = 0; ..