728x90
반응형

C++ 193

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

쉽지만 손이 좀 가는 문제다. 입력이 매우 많기 때문에.. 시간초과가 나기 십상이다. https://www.acmicpc.net/problem/1620 #맞은 풀이 #include #include #include #include using namespace std; int N,M; string name[100001]; // 해당 번호에 이름 저장해놓음 map m; int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> N >> M; for(int i = 1; i> s; name[i] = s; //-> 해당 번호에 이름을 입력 m.insert(make_pair(s,i)); } for(int i = 1; i> s; //숫자가 입력됐는지 확인 !!!!!!! 중요 /..

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

음... 실수가 제일 많았던 문제다. 이게 어려운거겠지... 시간이 매우 없다. 재귀라도 적당히 재귀하라는 거겠지..? https://www.acmicpc.net/problem/1074 #맞은 풀이 #include #include using namespace std; int N; int r, c; int cnt = -1; // 방문을 0부터 시작함*** ////////////////// //++아래와 같이하면 무조건 처음부터 끝까지 돌아야함... void func(int N, int a, int b) { //최소 N 길이가 2임. if (N == 2) { for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { cnt++; int x = a+i; // a..

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

이것 또한 분할 정복 Z자로 진행하는 방식이다. 더 어려워졌다면 9개로 늘어난거..? 시간도 많다 https://www.acmicpc.net/problem/1780 #맞은 풀이 틀린 부분에 대해서는 내가 주석을 좀 달아놨다. #include #include #define X first #define Y second using namespace std; int N; int map[2200][2200]; int mm = 0; int zz = 0; int pp = 0; void func(int N, int a, int b) { if (N == 1) { int std = map[a][b]; if (std == 1) { pp++; } else if (std == 0) { zz++; } else { mm++; } ..

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

이것 또한 분할 정복 Z자로 진행하는 방식이다. 더 어려워진다면 Z자가 아니라 새롭게 진행하는 방식이겠지 시간도 많다 https://www.acmicpc.net/problem/1992 #맞은 풀이 틀린 부분에 대해서는 내가 주석을 좀 달아놨다. #include #include #include #define X first #define Y second using namespace std; int N; int pic[65][65]; //N의 크기를 가지고 왼쪽 위 좌표가 a,b인 정사각형 void func(int N, int a, int b) { //가장 잘게 쪼갰을 때 if (N == 1) { //구현 //해당 값 출력 cout

백준, 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 우선순위 큐, Priority Queue 사용법 [C++]

유용한 STL인 큐 중에서 우선순위 큐를 알아보자 그냥 큐와 무엇이 다른지도 알아보자 Priority queues are a type of container adaptors, specifically designed such that its first element is always the greatest of the elements it contains, according to some strict weak ordering criterion. 일반적으로 첫번째 원소가 제일 큰 값을 가지게 하는 컨테이너다. **물론 첫번째 원소가 제일 작은 값을 나오게 할 수도 있다. This context is similar to a heap, where elements can be inserted at any mome..

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개 이상이면 합성수라고 할 수 있다. 다시 말하면 소수들의 곱으로 ..

728x90
반응형