백준, BOJ, 11562번 C++ [CPP] 백트래킹 문제다. 풀다 보니 감이 조금씩 온다. https://www.acmicpc.net/problem/15652 조금씩 감이 오긴 온다. #맞는 풀이 #include #include using namespace std; int N, M; vector vec; void func(int cnt) { if (cnt == M) { //선택 종료 시 for (int n : vec) { cout 문제풀이(Problem Solving) 2021.06.08
백준, BOJ, 1181번 C++ [CPP] 쉬운 문제지만 sort에서 cmp를 이용하는 문제고 문자열을 이용해서 익혀볼만 하다. https://www.acmicpc.net/problem/1181 [문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들] - set처럼 vector에서도 중복된 것들 없애기, unique() 위 글이 도움이 될 것이다. #맞는 풀이 #include #include #include #include using namespace std; int N; vector vec; bool cmp(string s1, string s2){ //길이가 작은 것이면 앞으로 if(s1.length() < s2.length()){ return true; }else if(s1.length() == s2.length()){ // .. 문제풀이(Problem Solving) 2021.06.07
set처럼 vector에서도 중복된 것들 없애기, unique() https://www.acmicpc.net/problem/1181 물론 set으로 중복된 것을 없애면서 정렬까지 가능하나. 벡터에서도 필요한 것만 하기 위해서 중복된 것을 없애는 작업을 알아보자 위 문제가 좋은 문제다. #include를 해줘야 쓸 수 있다. 쉽게 말하자면 값이 같고 뭉쳐있는 그룹은 리더가 대표하겠다 라고 생각하면된다. 값이 같아도 그룹이 나누어져 있으면 각 그룹의 대표를 가져오겠다는 말이다. **반환은 역시나 iterator를 반환한다. #예1 (정렬 x) // unique algorithm example #include // std::cout #include // std::unique, std::distance #include // std::vector bool myfunction (.. 문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들 2021.06.07
백준, BOJ, 18870번 C++ [CPP] 어렵지 않았지만 방법이 조금 틀렸다. https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net find에 대한 오해가 생겨서 시간 초과가 났다. # 시간 초과 풀이 #include #include #include #include using namespace std; int N; vector vec; int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> N; .. 문제풀이(Problem Solving) 2021.06.07
경계값 iterator 찾기 lower_bound() 와 upper_bound() https://www.acmicpc.net/problem/18870 이 문제가 대표적인 예다. ** find로 경계값 찾는 것 보다 이게 더 빠르다. find는 O(N) 시간 복잡도를 가지기 때문이다. lower_bound는 이진탐색 기반이라 빠르다고 한다. **그래서 set 기본 메서드에도 lower_bound가 존재한다. [문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들] - set으로 중복없애고 자동 정렬하기 lower_bound(first, last, value)는 value보다 작은 값의 경계를 반환한다. upper_bound(first, last, value)는 value보다 큰 값의 경계를 반환한다. // lower_bound/upper_bound example #inc.. 문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들 2021.06.07
set으로 중복없애고 자동 정렬하기 set이용하기 #include 을 해야한다. 이진트리로 구현되어있음 **원소가 오름차순 또는 내림차순으로 정렬되어 저장된다는 점 내가 가지고 있는 vector vec을 set으로 만드려면 저렇게 선언하면 된다. //set은 중복을 제거하면서 sort도 함 set s(vec.begin(), vec.end()); 배열은 아래와 같이 set s(arr, arr+ 100); 일반적으로는 이렇다. set 변수 set 변수(복사할 변수) set 변수 = 복사할 변수 *** 하지만 set은 iterator가 bidirentional 이므로 원래 우리가 알던 연산이 안되는 경우가 있다 참고하자. 기본적으로 아래와 같이 iterator를 반환한다. s.begin() : set의 시작이 되는 주소 값 반환 s.end() .. 문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들 2021.06.07
오름차순 정렬말고 comp로 sort 커스터마이징하기 sort에서 comp 함수 만들어서 비교하기 comp의 parameter는 내가 비교할 것이 무엇인지에 달렸다. pair는 아래와 같이 comp를 만든다. bool comp(pair x, pair y) { return x.first < y.first; } 구조체는 아래와 같이 comp를 만든다. struct Id{ int order; int age; string name; }; //const와 &을 받아옴 bool comp(const Id &p1, const Id &p2){ if(p1.age< p2.age){ return true; } else if(p1.age == p2.age){ return p1.order < p2.order; }else{ return false; } } 구성은 자유롭게 하면된다. .. 문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들 2021.06.07
반올림 함수, round() include 또는 위의 헤더를 포함해야 쓸 수 있는 반올림 함수이다. -> 0.5를 기준으로 어떤 정수에 더 가까운지 판단하는 것이다. 오버로딩이 많이 되었다. double로 쓰는 것이 일반적이다. 문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들 2021.06.07
순열, 순서구분하고 선택하는 방법 순열에 아주 좋은 것 http://www.cplusplus.com/reference/algorithm/next_permutation/ next_permutation - C++ Reference function template std::next_permutation default (1)template bool next_permutation (BidirectionalIterator first, BidirectionalIterator last); custom (2)template bool next_permutation (BidirectionalIterator first, BidirectionalIterator last, Comp www.cplusplus.com 바로 next_permutation 함수다. 말 .. 문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들 2021.06.07
컨테이너에서 특정 값 찾기 find() 라이브러리의 find가 있음 iterator를 인수로 받는다. 다만 find는 왼쪽부터 최초 원소만 찾고 find_if는 조건에 만족하는 모든 원소 찾음 #include #include #include using namespace std; bool isOdd(int n) { return n % 2 == 1; } int main() { vector v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_back(3); v.push_back(6); cout 문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들 2021.06.07