본문 바로가기
  • Let's study

PS/백준56

[C++] 백준 1912: 연속합 #include using namespace std; int main() { int n; cin >> n; int dp[100001]; int num[100001]; int res; for (int i = 0; i > num[i]; } res = num[0]; dp[0] = num[0]; for (int i = 1; i res) res = dp[i]; } cout 2022. 7. 12.
[C++] 백준 2109번: 순회강연 문제 한 저명한 학자에게 n(0 ≤ n ≤ 10,000)개의 대학에서 강연 요청을 해 왔다. 각 대학에서는 d(1 ≤ d ≤ 10,000)일 안에 와서 강연을 해 주면 p(1 ≤ p ≤ 10,000)만큼의 강연료를 지불하겠다고 알려왔다. 각 대학에서 제시하는 d와 p값은 서로 다를 수도 있다. 이 학자는 이를 바탕으로, 가장 많은 돈을 벌 수 있도록 순회강연을 하려 한다. 강연의 특성상, 이 학자는 하루에 최대 한 곳에서만 강연을 할 수 있다. 예를 들어 네 대학에서 제시한 p값이 각각 50, 10, 20, 30이고, d값이 차례로 2, 1, 2, 1 이라고 하자. 이럴 때에는 첫째 날에 4번 대학에서 강연을 하고, 둘째 날에 1번 대학에서 강연을 하면 80만큼의 돈을 벌 수 있다. 입력 첫째 줄에 정수.. 2021. 11. 1.
[C++] 백준 1946: 신입사원 문제 언제나 최고만을 지향하는 굴지의 대기업 진영 주식회사가 신규 사원 채용을 실시한다. 인재 선발 시험은 1차 서류심사와 2차 면접시험으로 이루어진다. 최고만을 지향한다는 기업의 이념에 따라 그들은 최고의 인재들만을 사원으로 선발하고 싶어 한다. 그래서 진영 주식회사는, 다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다. 즉, 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다. 이러한 조건을 만족시키면서, 진영 주식회사가 이번 신규 사원 채용에서 선발할 수 있는 신입사원의 최대 인원수를 구하는 프로그램을 작성하시오. 입력 첫째 줄.. 2021. 11. 1.
[C++] 백준 1931번: 회의실 배정 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231-1보다 작거.. 2021. 11. 1.
[C++] 백준 2225번: 합분해 dp라는 건 금방 감이 왔고 N과 K가 만큼 더해야 하니까 2차원 배열을 써야겠다고 생각이 났다. dp 배열에서 행은 N, 열은 K를 저장한다고 볼 때 dp[3][3]을 구해보자. dp[1][1]=1, dp[1][2]=2, dp[1][3]=1; dp[2][1]=1, dp[2][2]=3, dp[2][3]=4; dp[3][1]=1, dp[3][2]=4, dp[3][3]=8; dp[2][2]=dp[1][1]+dp[1][2]이고 dp[3][3]=dp[2][1]+dp[2][2]+dp[2][3] 임을 볼 수 있다. #include #define MAX 1000000000 using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(0), c.. 2021. 9. 12.
[C++] 백준 2468번: 안전 영역 #include #include #include #include using namespace std; int arr[101][101]; bool visit[101][101]; int dx[] = { 1,-1,0,0 }, dy[] = { 0,0,1,-1 }; int n, height[101]; void dfs(int x, int y, int h) { visit[x][y] = true; for (int i = 0; i = 0 && nx = 0 && ny h) { dfs(nx, ny, h); } } } int main() { .. 2021. 9. 12.