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

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

블록

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

요약
여섯 글자가 적힌 블록 네 개가 주어질 때, 각 단어의 글자를 서로 다른 블록에 하나씩 배정할 수 있는지 판정한다.
난이도

쉬움10점 중 2점

유형
백트래킹, 완전 탐색, 구현, 문자열
정답자
아직 제출이 없습니다

문제

단어 실력을 키우려는 소 베시는 나무 블록 네 개를 구했다. 블록은 정육면체이고, 여섯 면에 알파벳 글자가 하나씩 적혀 있다. 베시는 블록을 한 줄로 늘어놓아 위에 보이는 글자로 단어를 만드는 방식으로 철자를 익히고 있다.

베시의 블록 네 개에 적힌 글자와 그녀가 만들고 싶어 하는 단어 목록이 주어졌을 때, 목록의 단어 중 어떤 것을 블록으로 만들 수 있는지 판별하시오.

입력

첫째 줄에는 베시가 만들고 싶어 하는 단어의 수 NN (1≤N≤101\le N\le 10)이 주어진다. 다음 네 줄에는 각각 알파벳 대문자 여섯 글자로 이루어진 문자열이 주어지며, 이는 블록 하나의 여섯 면에 적힌 글자를 나타낸다. 그다음 NN줄에는 베시가 만들고 싶어 하는 NN개의 단어가 주어진다. 각 단어의 길이는 알파벳 대문자 1글자 이상 4글자 이하이다.

출력

베시의 목록에 있는 각 단어마다 블록으로 그 단어를 만들 수 있으면 YES, 만들 수 없으면 NO를 출력한다.

힌트

이 예시에서 베시는 COW, ZOO, MOVE를 만들 수 있다. MOO는 만들 수 없는데, M이 적힌 블록이 하나뿐이라 같은 블록을 O에도 쓸 수 없기 때문이다. FARM은 R이 적힌 블록이 없어서 만들 수 없다. CODE는 C, D, E가 모두 같은 블록에 있어서 만들 수 없다.

예제1

  1. 예제 1

    입력
    6
    MOOOOO
    OOOOOO
    ABCDEF
    UVWXYZ
    COW
    MOO
    ZOO
    MOVE
    CODE
    FARM
    
    예상 출력
    YES
    NO
    YES
    YES
    NO
    NO