728x90
반응형

CPP 175

백준, BOJ, 2630번 C++ [CPP]

이런 문제는 쉽게 짜면 쉽게 풀리지만 순서를 허투루 적었다간 나처럼 30분 날린다. https://www.acmicpc.net/problem/2630 나의 첫번째풀이... (틀림) -> 전체를 검사하지 않음. (즉, 전체는 틀렸다고 가정하고 품) #include #include #define X first #define Y second using namespace std; int N; int sample[129][129]; int white = 0; int blue = 0; //N사각형 크기, a,b해당 사각형의 왼쪽 위 좌표 void func(int N, int a, int b) { if (N == 1) { if (sample[a][b] == 1) { blue++; } else { white++; } ..

STL 맵, map 사용법 [C++]

맵이 뭔가 싶지만 C++의 dictionary를 맵이라 부른다. 즉, key ,value 짝의 자료구조를 맵이라 부른다. 그래서 선언할 때도 key자료형, value자료형 같이 선언한다. map: key와 value를 pair 형태로 선언한다. **unordered_map은 체이닝을 사용하는 해시 테이블로 구현되어 있다. 부하율이 1이 되면 해시 테이블의 크기를 키우고 재해싱을 하게 된다. 우선 Map이란 Maps are associative containers that store elements formed by a combination of a key value and a mapped value, following a specific order. 일반적으로 맵에서 key를 찾아서 value를 반환하는..

Container 원소들 역순정렬하기

어떤 컨테이너에 원소들이 들어있고 역순으로 정렬되기를 원한다면 을 include해야 쓸 수 있다. https://www.cplusplus.com/reference/algorithm/reverse/ reverse()를 쓰면 된다. #include #include using namespace std; int main(){ vector a; reverse(a.begin(), a.end()); return 0; } https://www.cplusplus.com/reference/iterator/BidirectionalIterator/ 다만 눈에 띄는 점이라면 void reverse (BidirectionalIterator first, BidirectionalIterator last); 즉, 그냥 이터레이터가 아..

특정 숫자 n 까지의 약수 구하기, GCD [C++]

[문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들] - 유클리드 호제법, 최대공약수 구하기, GCD [C++] 위 글도 참고하면 좋다. 아무튼 특정 숫자의 약수를 구하기 위해서는 약수의 정의부터 알 필요가 있다. 일반적으로 b=an인 정수 n이 존재할 때, a|b라 하고, 이때의 a를 b의 약수라 한다. 다르게 말하면 어떤 정수를 나누어 떨어지게 하는 0이 아닌 정수라고 한다. 모든 자연수는 최소한 1과 자기 자신을 약수로 갖는다. **소수는 최소한의 약수만을 가진 1을 제외한 자연수를 말한다. 다시 말해서 약수가 1과 자기 자신뿐인 자연수를 말한다. **합성수는 1과 자기자신 외에 다른 약수를 가지면 즉, 약수가 3개 이상이면 합성수라고 할 수 있다. 다시 말하면 소수들의 곱으로 ..

백준, BOJ, 1676번 C++ [CPP]

10^승의 개수가 0의 개수란 것을 안다면 쉽다. 다만 숫자가 크기에..잘해봐야한다. 더군다나 시간제한도 있다 https://www.acmicpc.net/problem/1676 #맞는 풀이 #include using namespace std; //0의 개수는 소인수분해 시 2와 5의 개수에 따라 결정된다. //즉, 모든 숫자에 대해서 2,5의 개수파악, 근데 2의 개수가 압도적으로 많으므로 5의 개수만 파악하면 알아서 되겠다. int dp[501]; int main(){ int N; cin >> N; for(int i = 1; i

백준, BOJ, 1037번 C++ [CPP]

이문제는 내가 개똥같이 풀었다.. 하지만 감은 어느정도 왔었다. https://www.acmicpc.net/problem/1037 시간도 넉넉하다. 메모리도 넉넉하다. long long을 쓸 것 같다는 생각을 하자. #맞는 풀이 #include #include #define M 1000000 using namespace std; //약수 개수 int func(int a){ int cnt = 0; for(int i =2; i> num; for(int i =0; i> a; vec.push_back(a); } int ans = 0; for(int i = 2; i

백준, BOJ, 13305번 C++ [CPP]

이 문제도 어렵진 않다. 어렵다면 왜 이렇게 해야하는지? 에 대한 의문에 대한 해답일 것이다. https://www.acmicpc.net/problem/13305 시간도 넉넉하다. 메모리도 넉넉하다. long long을 쓸 것 같다는 생각을 하자. #맞는 풀이 #include #include using namespace std; int numOfCity; long long dist[100001]; // 도시별 거리 long long cost = 0; long long price[100001]; // 도시별 가격 vector vec; // 탐색한 도시의 위치를 담을 벡터 int main() { cin >> numOfCity; for (int i = 1; i > dist[i]; // i번째는 i번에서 i+1..

728x90
반응형