프로그래밍/알고리즘 26

no.11399 ATM

#include #include #include #include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; int result = 0; vector arr(N); for (int i = 0; i > arr[i]; } sort(arr.begin(), arr.end()); result = arr[0]; for (int i = 1; i  문제분석사람들이 인출하는 데 걸리는 시간 Pi를 오름차순으로 정렬한 후,앞선 사람이 오래 걸릴수록 뒤 사람들은 더 많은 대기 시간을 더하게 되므로 , 걸리는 시간이 짦은 사람부터먼저 인출하는것이 총 대기시간을 최소화 한다. 1에서 5..

no.9095 1,2,3 더하기

#include #include #include #include #include using namespace std;int main(){ int n; cin >> n; vector test; for (int i = 0; i > temp; test.push_back(temp); } int arr[12] = { 0 }; arr[0] = 0; arr[1] = 1; arr[2] = 2; arr[3] = 4; for (int i = 4; i  문제분석정수 n을 1,2,3의 합으로 나타내는 경우의 수를 구해야하는 문제이다.주의해야 할점은 1+2와 2+1은 다른 방법이다. 즉 순서가 다른 합은 다른 방법으로 세야한다 점화식을 구해보자dp[n]을 정수 n을 1,2,3,의 합으로 나타내는 방법의 총 개수라고 가정했을..

no.11726 2xn 타일링

#include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; // n 최대 1000 static int dp[1001]; dp[1] = 1; dp[2] = 2; for(int i = 3; i  문제 분석 직사각형의 크기는 2xn으로 고정되어 있고 사용할 수 있는 타일은 1x2 타일과 2x1타일 뿐이다.이 타일들의 조합을 사용하여 2xn 전체를 꽉 채우는 수의 경우를 구해야함  접근작은 예시를 살펴보면 n이 1일때는 세로로 놓는 타일, 1가지 방법뿐이고 n이 2이면 가로로 2개 놓거나 세로로 2개 놓기 2가지 방법뿐임 n이 3이상일때..

no.17219 비밀번호 찾기

#include #include #include #include using namespace std;int main(){ int N, M; cin >> N >> M; unordered_map sites; for (int i = 0; i > site >> password; sites[site] = password; } vector answer; for (int i = 0; i > find; answer.push_back(sites[find]); } for (auto i : answer) { cout  문제 분석사이트 목록과 그 사이트들의 비밀번호가 N개 입력되었을때,어떠한 사이트의 비밀번호를 M개 찾는 문제이다 키 - 값으로 이루어진 해시맵을 이용해 간단하게 풀 수 있다.단순 해시맵 자료구조를 사용할..

no.11724 연결 요소의 개수

#include #include #include #include using namespace std;vector grid[1001];bool visited[1001];int result = 0;void dfs(int n) { visited[n] = true; for (int nxt : grid[n]) { if (!visited[nxt]) dfs(nxt); }}int main(){ int N, M; cin >> N >> M; for (int i = 0; i > a >> b; grid[a].push_back(b); grid[b].push_back(a); } for (int i = 1; i  문제분석방향이 없는 그래프에서 연결요소, 즉 덩어리의 개수를 구하는 문제이다.전에 풀었던 바이러스문제와 유사..

no.12891 DNA 비밀번호

투포인터 문제를 푸는김에 슬라이딩 윈도우를 포함한 투포인터 문제를 풀어보았다.#include #include #include #include "no12891.h"using namespace std;int charToIndex(char c) { switch (c) { { case 'A':return 0; case 'C':return 1; case 'G':return 2; case 'T':return 3; } return -1; }}bool check(const vector& current, const vector& minimum) { for (int i = 0; i > S >> P; string password; cin >> password; vector minRequired(4); f..