BoJ 28544 - 알록달록 앵무새 [with Python]

ssook·2023년 9월 12일
0

BoJ 문제기록

목록 보기
15/29
post-thumbnail

📍 문제

문제

재현이가 키우는 앵무새 포포와 레몬이는 그동안 새끼들을 참 많이도 낳았다. 그렇게 태어난 앵무새들을 관찰하며 재현이는 앵무새들의 색에 간단한 규칙이 있다는 것을 발견했다. 그것은 바로 자식 앵무새의 몸통 색은 아빠 새의 몸통 색과 꼬리 색, 엄마 새의 몸통 색과 꼬리 색 중 하나이며 꼬리 색도 마찬가지로 이 넷 중 하나의 색으로 정해진다는 것이다.

아빠 새의 몸통 색과 꼬리 색, 엄마 새의 몸통 색과 꼬리 색이 주어질 때 가능한 자식 앵무새의 몸통 색과 꼬리색의 모든 쌍을 사전 순으로 출력하라. (단, 중복되는 몸통 색, 꼬리 색의 쌍은 출력하지 않는다.)

입력

첫 번째 줄에 아빠 새의 몸통 색과 꼬리 색이 주어진다.
두 번째 줄에 엄마 새의 몸통 색과 꼬리 색이 주어진다.

각각의 색은 11자 이상 2020자 이내의 알파벳 소문자로 이루어진 문자열로 주어지며, 같은 색이 중복되어 나타날 수 있다.

출력

자식 새의 몸통 색과 꼬리 색의 쌍을 한 줄에 하나씩 사전 순으로 출력한다. 사전 순으로 출력하라는 말은 몸통 색이 다르다면 몸통 색의 사전 순으로, 몸통 색이 같다면 꼬리 색의 사전 순으로 출력하라는 것을 의미한다.


📍 아이디어

그냥 값들을 받아서, 리스트 한 다음 원본 값 한 번 정렬해준다.
그 후 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)
profile
개발자에서, IT Business 담당자로. BrSE 업무를 수행하고 있습니다.

0개의 댓글