아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

친구들

면접 대비

시간 제한1초메모리 제한128 MB

요약
대문자 친구 집합에 대해 합집합, 교집합, 차집합을 계산한다. *가 +와 -보다 우선하며 같은 우선순위는 왼쪽부터 결합한다.
난이도

보통10점 중 5점

유형
문자열, 스택, 구현, 비트 연산
정답자
아직 제출이 없습니다

문제

친구들과 함께 성대한 생일 파티를 계획하려고 한다. 계획을 세우다 보면 친구들의 집합에 대해 여러 연산을 해야 한다는 것을 알게 된다.

  • 두 그룹 g1 과 g2 를 모두 초대하려면, 파티 그룹은 g1 + g2 가 되며 이는 두 그룹의 합집합이다.
  • 두 그룹의 교집합은 g1 * g2 로 계산하며, 두 그룹에 공통으로 속한 원소들의 집합이다.
  • 그룹 g1 을 초대하되 다른 그룹 g2 의 구성원을 모두 제외하려면 g1 - g2 로 쓰며, 이는 차집합이다.

교집합(*)은 합집합(+)과 차집합(-)보다 우선순위가 높다. 모든 연산은 왼쪽 결합이다. 즉, A op1 B op2 C 에서 op1 과 op2 의 우선순위가 같다면 먼저 A op1 B 를 계산한다.

입력

입력은 하나 이상의 줄로 이루어진다. 각 줄에는 계산해야 할 식이 하나씩 들어 있다. 식은 문법적으로 올바르며 다음 문자들로만 구성된다.

  • { 와 }
  • 원소를 나타내는 A 부터 Z 까지의 대문자 (각각 한 명의 친구를 의미한다)
  • 연산자 +, -, *
  • 그룹화를 위한 ( 와 )

한 줄의 길이는 255자를 넘지 않는다.

출력

각 식의 결과 집합을 중괄호 { 와 } 로 감싸서 한 줄에 하나씩 출력한다. 각 집합의 원소는 알파벳 순으로 정렬하여 출력한다.

예제1

  1. 예제 1

    입력
    {ABC}
    {ABC}+{DEFG}+{Z}+{}
    {ABE}*{ABCD}
    {ABCD}-{CZ}
    {ABC}+{CDE}*{CEZ}
    ({ABC}+{CDE})*{CEZ}
    
    예상 출력
    {ABC}
    {ABCDEFGZ}
    {AB}
    {ABD}
    {ABCE}
    {CE}