본문으로 이동
코드패스 by Devin.KR

문제 4609 · 바이트 II

한 교대에만 보인 상품

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 편의점은 진열 상태를 살펴보기 위해 오전 교대와 오후 교대에 각각 상품 코드를 스캔했다. 직원은 매대를 따라 이동하면서 눈에 보이는 상품을 자유롭게 스캔했으므로 같은 상품 코드가 한 교대의 목록에 여러 번 들어갈 수 있다. 두 목록의 길이도 서로 다르며, 스캔 순서 역시 상품 코드의 순서와 관계가 없다. 점장은 두 교대에서 관찰된 상품 구성이 얼마나 달랐는지 확인하려 한다. 이를 위해 정확히 한 교대의 목록에서만 발견된 상품 코드를 모아 별도의 확인 목록을 만든다. 오전 목록에 한 번 이상 등장하고 오후 목록에는 전혀 등장하지 않은 코드는 확인 대상이다. 반대로 오후 목록에 한 번 이상 등장하고 오전 목록에는 전혀 등장하지 않은 코드도 확인 대상이다. 두 목록에 모두 등장한 코드는 등장 횟수가 서로 다르더라도 확인 대상이 아니다. 상품 코드 하나는 상품의 종류 하나를 뜻하며, 같은 교대에서 같은 코드가 반복되어도 새로운 종류가 추가되는 것은 아니다. 예를 들어 어떤 코드가 오전에 세 번, 오후에 한 번 등장했다면 두 교대에서 모두 관찰된 상품이므로 제외한다. 오전에만 네 번 등장했다면 확인 목록에는 그 코드를 한 번만 넣는다. 스캔하지 않은 이유나 실제 재고 수량은 이 작업에서 추측하지 않는다. 오직 주어진 두 목록에 코드가 존재하는지만 사용한다. 확인 목록에 들어가는 서로 다른 상품 코드의 수를 구하고, 해당 코드들을 사전순으로 출력해야 한다. 코드는 영문 소문자로만 이루어지며, 사전순은 앞에서부터 문자를 비교했을 때 처음 다른 문자가 알파벳에서 앞서는 쪽이 먼저 오는 순서다. 한 코드가 다른 코드의 접두사이면 짧은 코드를 먼저 둔다. 확인할 코드가 하나도 없다면 개수 0만 출력하고 상품 코드 줄은 출력하지 않는다.

입력

첫째 줄에 오전 스캔 수 N과 오후 스캔 수 M이 공백으로 주어진다. N과 M은 정수이며, 0≤N, M≤100,000이고 1≤N+M≤100,000이다.
다음 N개 줄에 오전에 스캔한 상품 코드가 하나씩 주어진다. 이어지는 M개 줄에 오후에 스캔한 상품 코드가 하나씩 주어진다.
각 코드는 길이가 1 이상 20 이하인 영문 소문자 문자열이다.

출력

첫째 줄에 확인 대상인 서로 다른 상품 코드의 수 K를 출력한다. 다음 K개 줄에 확인 대상 코드를 사전순으로 하나씩 출력한다. K가 0이면 첫째 줄만 출력한다.

예제 입력 1

5 4
milk
bread
milk
tea
rice
tea
juice
juice
milk

예제 출력 1

3
bread
juice
rice

예제 입력 2

2 3
snack
water
water
snack
water

예제 출력 2

0

예제 입력 3

0 3
aa
a
aa

예제 출력 3

2
a
aa
힌트 펼치기
  • 각 교대의 목록을 중복 없는 집합으로 바꾼다.
  • 두 집합 중 정확히 하나에만 속하는 원소를 찾는다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류해시집합정렬

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)