[백준]

· [백준]/C++
https://www.acmicpc.net/problem/16464    #문제 간단 정리수학 문제이다 #문제 해결 방법일단 n (n+1) 로 나눠지면 n-1 n n+1 로 해결이 가능한데 불가능한 경우는 2의 거듭제곱으로 구성되는 경우밖에 없다2의 거듭제곱은 완벽한 대칭이기때문에 n n+1 로 분할 할 수 가없다 즉 2의 거듭제곱인지만 확인해주면 된다  #전체 코드#include using namespace std;int main() { int T; cin >> T; while (T--) { long long N; cin >> N; bool canWin = false; while (N != 1) { if (N % 2 ..
· [백준]/C++
https://www.acmicpc.net/problem/18243   #문제 간단 정리플로이드 워셜을 사용하자 #문제 해결 방법 모든 간선에서에 간선까지의 거리를 찾아야되니까 플로이드 워셜을 사용하자 그런데 n 이 작으므로 n^2 이상을 사용하는 bfs 를 사용해도 된다. 플로이드 워셜 코드https://dfdfg42.tistory.com/entry/%ED%94%8C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%9B%8C%EC%85%9C-C%EC%BD%94%EB%93%9C& dist, int V) { // 모든 정점 쌍 (i, j)에 대해 i" data-og-host="dfdfg42.tistory.com" data-og-source-url="https://dfdfg42.tistory.com/..
· [백준]/C++
https://www.acmicpc.net/problem/19554  #include using namespace std;int main() { long long N; cin >> N; long long left = 1, right = N; while (left > response; if (response == 0) { cout
· [백준]/C++
https://www.acmicpc.net/problem/17610  #문제 간단 정리 #문제 해결 방법 생각보다 무게를 만들수 있는 가짓수가 많지 않기때문에 우선 그릇 하나만 써서 만들수 있는 무게를 모두 만든다. 그 이후에 만든 무게중에 두개를 빼서 만들수 있는 무게를 확인한다.이 모든 만든 무게들을 출력해주면 된다. 나는 무게 만드는데는 dfs를 사용했다. #전체 코드#include #include #include using namespace std;vector mess;vector makes;vector check;vector dfsCheck;vector messNext;//한곳에 만들수 있는 모든 무게추 구하기void dfs(int index,int sumMess) { for (int i ..
· [백준]/C++
https://www.acmicpc.net/problem/20209     #문제 간단 정리브루트포스 완전탐색을 활용하자bfs 를 활용하면 된다  #문제 해결 방법 일단 문제가 좀 설명이 길기 때문에 이해하기 좀 걸릴 수가 있다. 우선 이 문제에서 주목해야 될 포인트는 4가 넘어가면 5로 나눈 값으로 큐브값을 유지한다는것이다. 그렇다면 우리는 스위치의 개수도 8개로 가짓수가 적고계속해서 5로 나눈다면 같은 상태가 반복된다는 걸 알 수 있다.이부분에서 전체 가짓수가 적다는걸 파악한다 여기서 같은 스위치를 대략 최대 4번정도 누른다면 원래 상태로 되돌아 올 수 있다는 걸 관찰 할 수 있고각 스위치 하나마다 최대 5가지의 상태가 파생되니까5^k 가 총 가짓수인걸 파악할 수 있다. 그렇다면 중복상태를 뛰어넘어서..
· [백준]/C++
https://www.acmicpc.net/problem/14760  #문제 간단 정리 #문제 해결 방법 간단한 문자열 파싱 구현문제 주요 요구하는 구현 조건은 연속된 X 를 판별하는데 있다.나는 연속된 x를 추적하는 seq 변수를 만들어서 '.' 이 나온다면 초기화를 시켯다 여기서 seq 을 결과값 nums 이중벡터에 담는데0이라면 담기지 않게 해두었다그리고 나중에 비어있는 벡터에는 0을 출력하게 했다 #전체 코드#include #include using namespace std;int main() { while (true) { int n; cin >> n; if (n == 0) break; vector> nng(n); for ..
· [백준]/C++
https://www.acmicpc.net/problem/6123     #문제 간단 정리문제 그대로 구현하기 #문제 해결 방법유행점수 L 이 주어지고 이거보다 저항 R 이 낮은 소들은유행에 참여하게 되고 유행점수를 K만큼 늘리게 된다소들이 어느정도 유행에 참여한는지를 출력하는 문제다 #전체 코드#include #include #include #include #include using namespace std;int main() { int N, L, K; cin >> N >> L >> K; vector r(N); for(int i=0; i> r[i]; } bool flag = true; int cows = 0; while (flag == true) { ..
· [백준]/C++
https://www.acmicpc.net/problem/1059  #문제 간단 정리수학문제 #문제 해결 방법 대략 n보다 작은 수의 개수 * n을 포함한 n보다 큰 원소들  + n보다 큰 원소들 구간 만드는 규칙을 잘 살피면 되는데n보다 작은 원소들을 n을 포함한 원소들과 짝을 만들고n은 n보다 큰 원소들과 짝을 지어준다고 생각하자 #전체 코드#include #include #include #include #include using namespace std;int main() { int n; cin >> n; vector nums(n); for (int i = 0; i > nums[i]; } nums.push_back(0); sort(nums.begin(),..
· [백준]/C++
https://www.acmicpc.net/problem/1522  #문제 간단 정리슬라이딩 윈도우/ 투포인터 #문제 해결 방법 중요한건 a의 개수만큼 윈도우를 만들어서윈도우 안에 담긴 b 만큼 교체를 해주는 숫자가 최소가 되는 때를 찾는 것이다. a의 개수만큼의 윈도우를 찾는다는 발상이 조금 어려울 수도 있을 것 같다. #전체 코드#include #include #include #include #include using namespace std;int main() { string s; cin >> s; int n = s.length(); int aCount = 0; int bCount = 0; int minBCount = INT_MAX; for (char c..
· [백준]/C++
#문제 해결 방법 가장 중요한 생각은S ->T로 가는건 가지수가 많기 때문에 시간초과가 나기 매우매우 쉽다는것이다.혹시 하더라도 일치하는지 확인하는 조건때문에 kmp 가 필요할지도 모르겟다. 때문에 T->S 로 가는 것은 매우 가지수가 적다.왜냐면 뒤에 A가 있다면 A를 추가한것이기 때문에 빼주고B가 잇다면 B를 뒤집고 추가해준거라 빼고 뒤집어 주면된다 이 힌트를 알 수 있는것은바로 추가하는 방향이 한쪽으로만 이뤄진다는 것이다. 만약 양방향으로 추가가 되었다면 불가능했을 것이다. #전체 코드#include #include #include #include using namespace std;int main() { string s,t; cin >> s >> t; while (true) { ..
경우42
'[백준]' 카테고리의 글 목록 (6 Page)