본문 바로가기

algorithm

(35)
백준 11478번 서로 다른 부분 문자열의 개수 https://www.acmicpc.net/problem/11478 아이디어:1. set에 insert해서 중복 제거2. string의 substr(n, k) 함수: n부터 k개의 부분 문자열 반환3. for문 반복 조건을 적절하게 사용 // 11478#include #include #include using namespace std;int main() { string S; string tmp; set A; cin >> S; for (int i = 0; i
백준 1269번 대칭 차집합 https://www.acmicpc.net/problem/1269 아이디어:1. (A - B) + (B - A) 는 (A ∪ B) - (A ∩ B) 와 같다.2. 교집합을 구하는 set_intersection() 함수는 아직 사용하기 어려워 정석대로 A ∪ B와 A ∩ B를 구해서 erase했다.3. A ∪ B는 하나의 set에 A와 B의 원소를 모두 insert하면 알아서 중복을 제거하며 생성된다.4. A ∩ B는 하나의 B의 원소가 A의 원소에도 있으면 추가하는 식으로 생성한다.5. A ∪ B에서 A ∩ B를 erase하고 size를 출력한다. // 1269#include #include using namespace std;int main() { int n, m, k; cin >> n >> m; se..
백준 1764번 듣보잡 #include #include using namespace std;map hear;int main() { ios::sync_with_stdio(false); cin.tie(0); int n, m; int count = 0; string value; cin >> n >> m; for (int i = 0; i > value; hear.insert({ value, 0 }); } for (int i = 0; i > value; if (hear.find(value) != hear.end()) { count++; hear[value]++; } } cout ::iterator iter = hear.begin(); iter != hear.end(); iter++) { if (iter->second >..
백준 10816번 숫자 카드 2 https://www.acmicpc.net/problem/10816 아이디어:1. map 사용. map의 first는 카드, second는 갯수로 활용. ex) , , ...2. 출력은 그냥 map의 second 출력 #include #include using namespace std;map card;int main() { ios::sync_with_stdio(false); cin.tie(0); int n, m, k; cin >> n; for (int i = 0; i > k; card[k]++; } cin >> m; for (int i = 0; i > k; cout  틀린 코드 설명:#include #include using namespace std;int main() { ios::sync_wit..
백준 1620번 나는야 포켓몬 마스터 이다솜 https://www.acmicpc.net/problem/1620 C++ 아이디어:1. map은 value로 key를 찾는 함수가 없어 직접 for문을 만들어야하기 때문에 시간 초과를 유발한다.따라서 map과 map로 2개의 map을 만들고 find 함수를 사용한다.2.출력은 입력 들어오는대로 했다.3. 전역변수로 선언해서 메모리의 스택 영역이 아닌 힙 영역을 사용했다.  // 1620#include #include #include using namespace std;map db;map db2;int main() { ios::sync_with_stdio(false); cin.tie(0); int n, m, k; string value; cin >> n >> m; for (int i = 0; i > val..