재현이가 키우는 앵무새 포포와 레몬이는 그동안 새끼들을 참 많이도 낳았다. 그렇게 태어난 앵무새들을 관찰하며 재현이는 앵무새들의 색에 간단한 규칙이 있다는 것을 발견했다. 그것은 바로 자식 앵무새의 몸통 색은 아빠 새의 몸통 색과 꼬리 색, 엄마 새의 몸통 색과 꼬리 색 중 하나이며 꼬리 색도 마찬가지로 이 넷 중 하나의 색으로 정해진다는 것이다.
아빠 새의 몸통 색과 꼬리 색, 엄마 새의 몸통 색과 꼬리 색이 주어질 때 가능한 자식 앵무새의 몸통 색과 꼬리색의 모든 쌍을 사전 순으로 출력하라. (단, 중복되는 몸통 색, 꼬리 색의 쌍은 출력하지 않는다.)
첫 번째 줄에 아빠 새의 몸통 색과 꼬리 색이 주어진다.
두 번째 줄에 엄마 새의 몸통 색과 꼬리 색이 주어진다.
각각의 색은 자 이상 자 이내의 알파벳 소문자로 이루어진 문자열로 주어지며, 같은 색이 중복되어 나타날 수 있다.
자식 새의 몸통 색과 꼬리 색의 쌍을 한 줄에 하나씩 사전 순으로 출력한다. 사전 순으로 출력하라는 말은 몸통 색이 다르다면 몸통 색의 사전 순으로, 몸통 색이 같다면 꼬리 색의 사전 순으로 출력하라는 것을 의미한다.
그냥 값들을 받아서, 리스트 한 다음 원본 값 한 번 정렬해준다.
그 후 itertools 사용해서 조합을 만든 다음 중복 제거하고,
정렬한 뒤에 출력하면 끝!
개인적으로는 N과 M 류의 문제(실버3이다)라 생각이 들어서...
N과 M을 내리거나 이 문제 난이도를 올리거나 해야 되지 않을까...
import itertools
import sys
f_body, f_tail = sys.stdin.readline().rstrip().split()
m_body, m_tail = sys.stdin.readline().rstrip().split()
raws = [f_body, f_tail, m_body, m_tail]
raws.sort()
res = list(set(itertools.product(raws, repeat = 2)))
res.sort( key = lambda x:(x[0], x[1]) )
for i in res:
print(*i)