https://www.acmicpc.net/problem/4158
문제
상근이와 선영이는 동시에 가지고 있는 CD를 팔려고 한다. CD를 몇 개나 팔 수 있을까?
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 상근이가 가지고 있는 CD의 수 N, 선영이가 가지고 있는 CD의 수 M이 주어진다. N과 M은 최대 백만이다. 다음 줄부터 N개 줄에는 상근이가 가지고 있는 CD의 번호가 오름차순으로 주어진다. 다음 M개 줄에는 선영이가 가지고 있는 CD의 번호가 오름차순으로 주어진다. CD의 번호는 십억을 넘지 않는 양의 정수이다. 입력의 마지막 줄에는 0 0이 주어진다.
상근이와 선영이가 같은 CD를 여러장 가지고 있는 경우는 없다.
출력
두 사람이 동시에 가지고 있는 CD의 개수를 출력한다.
해결방안 -> 상근이가 소유한 CD가 큰 경우, 선영의 CD개수가 크거나 같은 경우로 처음에 나눠주었다.
만약 상근이가 소유한 CD 개수가 큰 상태라면, 상근이의 CD개수를 map에 넣어두고, 선영이가 소유한 CD를 입력받고, map에 있는지 탐색한다.
map에 선영이가 소유한 CD가 있다면 상근이와 선영이가 모두 CD를 가진 경우이므로 count변수를 1 증가시킨다.
그와 반대인 경우에는 map에 선영이의 CD를 모두 맵에 넣어두고, 상근이가 보유한 CD를 입력받고, map에서 찾는다.
마찬가지로 map에 CD가 있으면 두 사람이 모두 CD를 소유한 경우이므로 count++증가시킨다.
테스트케이스가 여러개여서 마지막에 map.clear()를 해준다.
전체 소스코드->
'자료구조' 카테고리의 다른 글
백준 14753 C++ (0) | 2022.04.21 |
---|---|
백준 8979 올림픽 C++ (0) | 2022.04.08 |
백준 1431 시리얼번호 C++ (0) | 2022.03.27 |
C++ Priority queue 컨테이너 사용법 (0) | 2022.03.25 |
STD::multimap (0) | 2022.03.19 |