크로스워드 만들기 [2804]

2021. 2. 24. 01:54알고리즘/파이썬

반응형

크로스워드 만들기 [2804]

백준 - https://www.acmicpc.net/problem/2804

 

2804번: 크로스워드 만들기

A의 길이를 N, B의 길이를 M이라고 했을 때, 출력은 총 M줄이고, 각 줄에는 N개 문자가 있어야 한다. 문제 설명에 나온 것 같이 두 단어가 교차된 형태로 출력되어야 한다. 나머지 글자는 '.'로 출력

www.acmicpc.net

문제

  • 창영이는 크로스워드 퍼즐을 만들려고 한다.

  • 두 단어 A와 B가 주어진다.

  • A는 가로로 놓여야 하고, B는 세로로 놓여야 한다. 또, 두 단어는 서로 교차해야 한다. (정확히 한 글자를 공유해야 한다)

  • 공유하는 글자는 A와 B에 동시에 포함되어 있는 글자여야 하고, 그런 글자가 여럿인 경우 A에서 제일 먼저 등장하는 글자를 선택한다.

  • 마찬가지로 이 글자가 B에서도 여러 번 등장하면 B에서 제일 처음 나오는 것을 선택한다.

  • 예를 들어, A = "ABBA"이고, B = "CCBB"라면, 아래와 같이 만들 수 있다.

     

 


입력

  • 첫째 줄에 두 단어 A와 B가 주어진다.

  • 두 단어는 30글자 이내이고, 공백으로 구분되어져 있다.

  • 대문자로만 이루어져 있고, 적어도 한 글자는 두 단어에 포함되어 있다.

출력

  • A의 길이를 N, B의 길이를 M이라고 했을 때, 출력은 총 M줄이고, 각 줄에는 N개 문자가 있어야 한다.

  • 문제 설명에 나온 것 같이 두 단어가 교차된 형태로 출력되어야 한다.

  • 나머지 글자는 '.'로 출력한다.

 


풀이과정

  • for문 두개를 통해서 두개의 문자의 동일한 원소를 찾아낸다.

  • 찾아낸 원소의 인덱스값을 통해서 2차원 배열을 만든다.

     

 


느낀점

  • 왜막혔는가? 바보같이 배운거 제대로 복습을 안해서

  • answer = [['.']*len(a) for _ in range (len(b))] 중요하다!

  • 왜 a= [','] * n b=a*m 이렇게 했을까

  • break를 한꺼번에 벗어나기 위해 flag 를 사용했는데 다른방식이 있을까?

  • 파이썬에서는 없는듯하다.

반응형

'알고리즘 > 파이썬' 카테고리의 다른 글

후보 추천하기 [1713]  (0) 2021.02.24
올림픽 [8979]  (0) 2021.02.24
오르막길 [2846]  (0) 2021.02.24
나는 요리사다 [2953]  (0) 2021.02.24
슈퍼 마리오 [2851]  (0) 2021.02.24