Algorithm Study/Python

[백준 파이썬] #2804 크로스워드 만들기

728x90
반응형

풀기 전 생각해보기😮

  • 이차원 배열을 생성할 수 있는가
  • 이차원 배열 구조에서 원하는 위치의 요소를 선택할 수 있는가

 


풀이🛫

# 2804 크로스워드 만들기
# Bronze II 
word1, word2 = input().split()
# 이차원 배열 생성
arr = [['.' for i in range(len(word1))] for j in range(len(word2))]

# word1, word2에서 겹치는 글자의 인덱스 찾기
idx = 0
for i in word1:
    if i in word2:
        idx = i
        break

# word1, word2에서 겹치는 글자의 인덱스 찾기 
crs_idx_1 = word1.index(idx)	# 1
crs_idx_2 = word2.index(idx)	# 4

# 인덱스를 기준으로 arr에 글자 입력
for i in range(len(word1)):
    arr[crs_idx_2][i] = word1[i]
for i in range(len(word2)):
    arr[i][crs_idx_1] = word2[i]

# 출력
for i in arr:
    print(''.join(i))

 

핵심 정리🎁

arr = [[0 for j in range(cols)] for i in range(rows)]
  • 이차원 배열을 생성할 때 위와 같은 리스트 구조를 이용하자
# 이차원 배열 arr에서 row번째 행, cols번째 열에 접근
target = arr[col][row]]
  • rows와 cols의 위치를 주의해야 한다.
    행렬('행','열') 단어의 익숙함 때문에 혼동하기가 매우 쉽다.
    이차원 배열의 첫번째 인덱스는 '열'을, 두번째 인덱스는 '행'을 가리킨다고 생각해야 한다.

 

링크💎

 

2804번: 크로스워드 만들기

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

www.acmicpc.net

 

후기 😎

  • 오랜만의 이차원 배열 문제라 어렵게 느껴졌다.