[백준]/C++

· [백준]/C++
https://www.acmicpc.net/problem/4040#한국어 번역문제"Hey, John, John Conway의 Game of Life 알아?""직사각형 격자에 살아있는 셀과 죽은 셀이 있고, 모든 셀이 동시에 정해진 시계 틱에 따라 다음 세대의 셀 상태로 업데이트되는 그 게임 말하는 거지? 죽은 셀이 정확히 세 개의 살아있는 이웃을 가질 때 다음 세대에 살아있게 되고, 살아있는 셀이 이웃이 두 개 미만 또는 세 개 초과일 때 다음 세대에 죽게 되며, 다른 셀들은 상태가 변하지 않는 그 게임 말하는 거야?""응, 맞아. 내가 그걸 프로그래밍하려고 애쓰고 있는데...""대수롭지 않게 – 누구나 했잖아!""잠깐만, 내가 끝내게 – 극좌표 그래프 용지에서 작동하도록 프로그래밍하려고 해, 이렇게:"..
· [백준]/C++
https://www.acmicpc.net/problem/31747  #문제 간단 정리 2학년과 1학년이 섞인 줄에서가장 앞에있는 2학년과 1학년을 하나씩 없에는 기능을 구현하는 구현 + 시뮬레이션 문제  #문제 해결 방법 우선 나이브하게 그냥 1학년과 2학년을 k만큼 탐색해서벡터에서 제거해주는 나이브한 로직을 생각 해 낼 수 있는데#include #include #include #include #include using namespace std;int main() { int n, k; cin >> n >> k; vector line(n); for (int i = 0; i > line[i]; } int time = 0; while (!line.empty()) ..
· [백준]/C++
https://www.acmicpc.net/problem/7497  #문제 간단 정리 N 이 주어지고 N 이하의 숫자들에서 각 자리수를 곱햇을때 가장 커지는 숫자를 찾는 문제 #문제 해결 방법 N 이하의 숫자들의 자리수의 곱의 최대라는 말은4876이면 4 *  8 * 7 * 6  이렇게 곱할 수 있고4876 이하의 숫자인 3999도곱해서 3 * 9 * 9 * 9 를 곱해서 최대값을 찾을 수 있다. 여기서 쉽게 생각 할 수 있는건 9를 최대한 많이 만든다는건데 일단 어떤 자리수를 1내리면 그 뒤에 숫자들은 전부 9로 만들수 있다. 때문에 각 자리수를 한번씩 1 내리고 그 뒤에수를 전부 9로 만들어 주면서 최대값을 찾아주면 된다. #전체 코드#include #include #include using name..
· [백준]/C++
https://www.acmicpc.net/problem/16624   #문제 간단 정리 이 문제는 동시에 빙고가 나오는지 확인을 하면 되는데빙고는 행 빙고만 취급한다. #문제 해결 방법 만약 두 빙고카드에 같은 행에같은 숫자가 존재한다면 비길 수 있는 가능성으로 만드는 가능성이 존재한다. 하지만 만약1 2 3 4 5 1 6 7 8 9 2 3 4 6 7 1 2 3 4 5에서 1을 찾고1 6 7 8 9 에서 1을 찾아서 비긴다고 생각을해도 나머지 2 3 4 5, 6 7 8 9을 빙고하다보면2 3 4 6 7 행이 빙고가 되서 비기지 않는다 즉 다른카드에서 겹치는 쌍을 찾고1 2 3 4 5 에서 1을 골랏다면 2 3 4 5 를 추출1 6 7 8 9 에서 1을 골랏다면 6 7 8 9 를 추출해서2 3 4 5 6..
· [백준]/C++
https://www.acmicpc.net/problem/9764   #문제 간단 정리 #문제 해결 방법     // dp[i][j] 1~j의 수들의 합으로 i 를 만드는 방법의수     // 1. j를 포함하지 않고 만드는경우     // dp[i][j-1];     // 2. j를 포함해서 i를 만드는경우     // if(i>=j)  D[i][j] = (D[i][j] + D[i-j][j-1]) % mod ;      // D[i-j][j-1] = i-j를 1 ~ j-1 사이의 수들로 만드는방법의 수  일단 해결로직은 저렇긴한데dp를 떠올리는 발상을 정리해보자면 일단 특정 숫자를 쓰냐 안쓰냐로 생각 할 수 있고j를 안쓰고 만들면 j-1 개를 가지고 만드는 가지수와 같고j까지의 숫자를 써서 N을 만드는..
· [백준]/C++
https://www.acmicpc.net/problem/4358   #문제 간단 정리 #문제 해결 방법 맵을 쓰는 간단한 문제eof와 자리수 출력에 주의하자 #전체 코드#include #include #include #include using namespace std;int main() { map trees; int total = 0; string tree; while (getline(cin, tree)) { trees[tree]++; total++; } cout
· [백준]/C++
https://www.acmicpc.net/problem/9764   #문제 간단 정리 #문제 해결 방법 우선 동적 계획법을 사용해야된다는건 쉽게 알아차릴 수 있다 왜냐면 1. 중복되는 부분 문제(Overlapping Subproblems) 2. 최적 부분 구조(Optimal Substructure) 를 n의 조합을 알기 위해서는 이전의 수가 필요하고 이전의 수 조합으로 구할 수 있다는 것을 쉽게 알 수 있기 때문이다. 그렇다면 선택할수 있는건 그 수의 조합을 만들기 위해 어떤수를 사용하던가 사용하지 않던가  로 나뉜다는 것을 알 수 있다.   // dp[i][j] 1~j의 수들의 합으로 i 를 만드는 방법의수     // 1. j를 포함하지 않고 만드는경우     // dp[i][j-1];     //..
· [백준]/C++
https://www.acmicpc.net/problem/10026     #문제 간단 정리 기본적인 bfs 구현문제  #문제 해결 방법 bfs 를 조회할때 색약인지 색약인지 아닌지를 구분받아서 조회할 수 있는지 물어보는 문제이다 색약인경우의 조건을 잘 구현하자 #전체 코드 #include #include #include #include using namespace std;int dy[4] = { 0,-1,0,1 };int dx[4] = { -1,0,1,0 };int n;vector> rgb;vector> check;int blindCount;int nBlindCount;void bfs(int y, int x, bool blind) { queue> q; q.push({ y,x }); ch..
· [백준]/C++
https://www.acmicpc.net/problem/2589  #문제 간단 정리bfs를 통한 거리 문제 #문제 해결 방법 이 문제는 bfs를 통해서가장 먼 거리의 위치 를 찾는 문제이다 전형적이 bfs에서 조금 활용이라고 볼 수 있다. 모든 육지 노드에 대해 돌면서 그 육지에서가장 먼 노드를 찾고 가장 먼 거리를 변수에 저장하면 된다.  #전체 코드#include #include #include #include using namespace std;int n, m;int dy[4] = { 0,1,0,-1 };int dx[4] = { -1,0,1,0 };vector> tMap;int maxDist;int bfs(int inputY, int inputX) { //좌표,거리 queue> q; ..
· [백준]/C++
https://www.acmicpc.net/problem/25601   #문제 간단 정리그래프 탐색을 하면 된다 #문제 해결 방법 dfs로 풀었는데 트리의 부모만 확인해 주면 되니까 이렇게 복잡하게 풀 필요는 없어보인다..그래서 실버1인듯하다 #전체 코드#include #include #include #include #include #include using namespace std;map> node;map dfsCheck;int result;void dfs(string start, string target) { if (start == target) { result = 1; return; } for (auto a : node[start]) { if (..
경우42
'[백준]/C++' 카테고리의 글 목록 (5 Page)